z Bekti - Rita - Sevenhot Struktur Data & Algoritma 2009
DEFINISI DEFINISI HEAP Sebuah complete binary tree dengan ketentuan sebagai berikut : Perbandingan suatu node dengan suatu nilai node child-nya mempunyai ketentuan tertentu berdasarkan jenis heap-nya Jenis heap MAXHEAP (elemen maksimum di root) : A[parent(i)] ≥ A[i] nilai node lebih besar atau sama dengan nilai childnya MINHEAP (elemen minimum di root) : A[parent(i)] ≤ A[i] nilai node lebih kecil atau sama dengan nilai childnya Bekti.Rita.Sevenhot SDA - 2009
CONTOH HEAP MAXHEAP MINHEAP 12 2 10 7 4 7 6 2 4 7 12 4 8 10 nilai node ≥ nilai childnya nilai node ≤ nilai childnya Bekti.Rita.Sevenhot SDA - 2009
Heap adalah suatu priority queue (mempertahankan antrian prioritas). Dalam antrian prioritas, elemen yang dihapus adalah elemen yang mempunyai prioritas terbesar (atau terkecil, tergantung keperluan), dan elemen inilah yang selalu terletak di akar (root). Suatu heap sewaktu-waktu dapat berubah, baik itu dikarenakan penambahan elemen (insert) ataupun penghapusan elemen (delete). Struktur data heap biasanya diimplementasikan dalam array Bekti.Rita.Sevenhot SDA - 2009
INDEXING INDEXING 1 parent(i) = i/2 left_child(i) = 2·i right_child(i) = 2·i + 1 2 3 4 5 6 7 Bekti.Rita.Sevenhot SDA - 2009
OPERASI HEAP OPERASI HEAP INSERT Memasukkan data baru ke dalam heap tree Contoh : insert 9 Karena 9 < 10, maka 10 tidak terjadi switch Proses insert berhenti 10 7 1 3 2 4 9 10 7 9 3 2 4 1 10 9 7 3 2 4 1 exchange 9 > 1 exchange 9 > 7 Bekti.Rita.Sevenhot SDA - 2009
terbesar naik menjadi root OPERASI HEAP OPERASI HEAP ROOT DELETION Menghapus root pada heap tree Contoh : delete root 12 2 Elemen dengan indeks terbesar naik menjadi root HEAPIFY 7 10 7 10 1 3 4 2 1 3 4 Bekti.Rita.Sevenhot SDA - 2009
HEAPiFY HEAPIFY Definisi Algoritma Proses mengubah binary tree menjadi heap tree Algoritma Heapify(A,i) l ← left [i] r ← right [i] if l ≤ heap-size [A] and A[l] > A[i] then largest ← l else largest ← i if r ≤ heap-size [A] and A[r] > A[largest] then largest ← r if largest ≠ i then exchange A[i] ↔ A[largest] Heapify (A, largest) Bekti.Rita.Sevenhot SDA - 2009
HEAPiFY HEAPIFY Contoh 2 7 10 1 3 4 10 7 2 1 3 7 > 2 10 > 7 Bekti.Rita.Sevenhot SDA - 2009
HEAP SORT HEAP SORT HEAP SORT ALGORITHM adalah algoritma sorting yang berdasarkan pada struktur data heap tree Kompleksitas running time-nye : O(nlog(n)) Langkah : Susun array A kedalam heap tree Ambil root pada heap tree, masukkan ke array Hapus elemen root (dengan mempertahankan sifat heap, lakukan heapify jika tidak memenuhi sifat heap) Lakukan terus (langkah 2-3) hingga tree menjadi kosong Bekti.Rita.Sevenhot SDA - 2009
ALGORITHM HEAP SORT ALGORITHM HEAPSORT (A) BuildHeap (A) for i ← length (A) down to 2 do exchange A[1] ↔ A[i] heap-size [A] ← heap-size [A] - 1 Heapify (A, 1) Bekti.Rita.Sevenhot SDA - 2009
heap-size (A) ← length [A] for i ← floor(length[A]/2) down to 1 do BuildHeap(A) heap-size (A) ← length [A] for i ← floor(length[A]/2) down to 1 do Heapify (A, i) Heapify(A,i) l ← left [i] r ← right [i] if l ≤ heap-size [A] and A[l] > A[i] then largest ← l else largest ← i if r ≤ heap-size [A] and A[r] > A[largest] then largest ← r if largest ≠ i then exchange A[i] ↔ A[largest] Heapify (A, largest) Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Array A = [1, 4, 89, 77, 12, 50, 23] BuildHeap(A) Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Array A = [1, 4, 89, 77, 12, 50, 23] BuildHeap(A) insert 1 1 1 4 89 77 12 50 23 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Array A = [1, 4, 89, 77, 12, 50, 23] BuildHeap(A) insert 1 insert 4 1 1 4 4 1 4 1 89 77 12 50 23 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Array A = [1, 4, 89, 77, 12, 50, 23] BuildHeap(A) insert 1 insert 4 insert 89 1 1 4 4 89 4 1 1 89 1 4 89 1 4 77 12 50 23 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT BuildHeap(A) 89 77 4 1 12 50 23 insert 77 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT BuildHeap(A) 89 77 4 1 12 50 23 insert 77 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT BuildHeap(A) 89 77 50 1 12 4 23 insert 77 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT BuildHeap(A) 89 77 50 1 12 4 23 insert 23 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Delete root Heapify 77 23 40 1 12 4 89 50 77 50 23 50 1 12 4 23 1 12 4 1 12 4 77 23 40 1 12 4 89 sorted Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Delete root Heapify 55 23 4 1 12 77 89 50 Delete root Heapify 23 50 23 50 23 4 1 12 4 1 12 1 12 55 23 4 1 12 77 89 sorted Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Delete root Heapify 23 12 4 1 55 77 89 50 12 23 Delete root Heapify 23 4 23 4 12 4 1 12 1 1 23 12 4 1 55 77 89 sorted Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Delete root Heapify 12 1 4 23 55 77 89 sorted Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Delete root 4 1 12 23 55 77 89 sorted 12 4 Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Delete root Delete root 1 4 12 23 55 77 89 sorted Bekti.Rita.Sevenhot SDA - 2009
SIMULASI SIMULASI HEAP SORT Delete root Delete root Delete root 1 4 12 23 55 77 89 sorted Bekti.Rita.Sevenhot SDA - 2009
Selesai & Terima kasih Bekti.Rita.Sevenhot SDA - 2009