Memahami Pengurutan Tumpukan (Heap Sort)

Diterbitkan di: Kategori: Algoritma

Kunci heap sort adalah membangun max-heap, lalu menukar elemen teratas dengan elemen terakhir dan memperbaiki heap untuk sisa elemen.

def heapify(a, n, i):
    terbesar, kiri, kanan = i, 2 * i + 1, 2 * i + 2
    if kiri < n and a[kiri] > a[terbesar]:
        terbesar = kiri
    if kanan < n and a[kanan] > a[terbesar]:
        terbesar = kanan
    if terbesar != i:
        a[i], a[terbesar] = a[terbesar], a[i]
        heapify(a, n, terbesar)

def heap_sort(a):
    n = len(a)
    for i in range(n // 2 - 1, -1, -1):
        heapify(a, n, i)
    for i in range(n - 1, 0, -1):
        a[0], a[i] = a[i], a[0]
        heapify(a, i, 0)

Kompleksitas waktunya \(O(n \log n)\) pada semua kasus.

Label: Algoritma Pengurutan