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)