Anda di halaman 1dari 10

HEAP SORT

Heap Sort adalah algoritma pengurutan data


berdasarkan perbandingan, dan termasuk golongan
selection sort.
Heap sort mempunyai keunggulan yaitu
kompleksitas algoritma pada kasus terburuk adalah
n log n.
Algoritma pengurutan heap sort ini mengurutkan
isi suatu larik masukan dengan memandang larik
masukan sebagai suatu Complete Binary Tree
(CBT).





Operasi-operasi dalam heap sort
Delete-max atau delete-min: menghapus simpul akar dari
sebuah max atau min heap.
Increase-key atau decrease-key: mengubah nilai yang
tersimpan di suatu simpul.
Insert: menambahkan sebuah nilai ke dalam heap.
Merge: menggabungkan dua heap untuk membentuk
sebuah heap baru yang berisi semua elemen pembentuk
heap tersebut.


Binary heap digunakan sebagai struktur data dalam
algoritma Heap-Sort
Sebagaimana diketahui, ketika suatu Heap dibangun
maka kunci utamanya adalah: node atas selalu
mengandung elemen lebih besar dari kedua node
dibawahnya
Apabila elemen berikutnya ternyata lebih besar dari
elemen root, maka harus di swap dan lakukan: proses
heapify lagi
Root dari suatu Heap sort mengandung elemen terbesar
dari semua elemen dalam Heap
Proses Heap-Sort dapat dijelaskan sbb:
1. Representasikan Heap dengan n elemen dalam sebuah
array A[n]
2. Elemen root tempatkan pada A[1]
3. Elemen A[2i] adalah node kiri dibawah A[i]
4. Elemen A[2i+1] adalah node kanan dibawah A[i]
5. Contoh: array A=[16 14 10 8 7 9 3 2 4 1] mewakili
binary-heap sbb:
6. Ambil nilai root (terbesar) A[1..n-1] dan pertukarkan
dengan elemen terakhir dalam array, A[n]
7. Bentuk Heap dari (n-1) elemen, dari A[1] hingga A[n-1]
8. Ulangi langkah 6 dimana indeks terakhir berkurang
setiap langkah.


1


2 3


4 5 6 7



8 8 9 10








14 10
8 7 9 3
2 4 1
16 14 10 8 7
9
3 2 4
1
16


1


2 3


4 5 6 7



8 8 9 10








14 10
9 8 7 4
3 2 1
16 14 10 9 8
7
4 3 2
1
16
MAX-HEAPIFY(A, i)
1 l LEFT(i)
2 r RIGHT(i)
3 if l heap-size[A] and A[l] > A[i]
4 then largest l
5 else largest i
6 if r heap-size[A] and A[r] > A[largest]
7 then largest r
8 if largest i
9 then exchange A[i] A[largest]
10 MAX-HEAPIFY(A, largest)
BUILD-MAX-HEAP(A)
1 heap-size[A] length[A]
2 for i length[A]/2 downto 1
3 do MAX-HEAPIFY(A, i)
HEAPSORT(A)
1 BUILD-MAX-HEAP(A)
2 for i length[A] downto 2
3 do exchange A[1] A[i]
4 heap-size[A] heap-size[A] - 1
5 MAX-HEAPIFY(A, 1)

Anda mungkin juga menyukai