Bekti - Rita - Sevenhot
description
Transcript of Bekti - Rita - Sevenhot
S t r u k t u r D a t a & A l g o r i t m a 2 0 0 9Bekti - R i ta - Sevenhot
z
SDA - 2009
DEFINISI
Bekti.Rita.Sevenhot
DEFINISIHEAP 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
SDA - 2009Bekti.Rita.Sevenhot
CONTOH HEAP
MAXHEAP MINHEAP
12
10 7
6 2 4 7
2
4 7
12 4 8 10
nilai node ≥ nilai childnya nilai node ≤ nilai childnya
SDA - 2009Bekti.Rita.Sevenhot
» 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
SDA - 2009
INDEXING
Bekti.Rita.Sevenhot
INDEXING
parent(i) = i/2
left_child(i) = 2·i
right_child(i) = 2·i + 1
1
2 3
4 5 6 7
SDA - 2009
OPERASI HEAP
Bekti.Rita.Sevenhot
OPERASI HEAPINSERTMemasukkan data baru ke dalam heap tree
Contoh :insert 9
Karena 9 < 10, maka 10 tidak terjadi switchProses insert berhenti
10
7 7
1 3 2 4
9
exchange9 > 1
10
7 7
9 3 2 4
1
exchange9 > 7
10
9 7
7 3 2 4
1
SDA - 2009
OPERASI HEAP
Bekti.Rita.Sevenhot
OPERASI HEAPROOT DELETIONMenghapus root pada heap tree
Contoh : delete root
12
7 10
1 3 4 2
2
7 10
1 3 4
Elemen dengan indeksterbesar naik menjadi root
HEAPIFY
SDA - 2009
HEAPIFY
Bekti.Rita.Sevenhot
HEAPiFYDefinisi Proses mengubah binary tree menjadi heap tree
AlgoritmaHeapify(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)
SDA - 2009
HEAPIFY
Bekti.Rita.Sevenhot
HEAPiFYContoh
2
7 10
1 3 4
7 > 210 > 7
10
7 2
1 3 7
7 > 2
10
7 7
1 3 2
SDA - 2009
HEAP SORT
Bekti.Rita.Sevenhot
HEAP SORTHEAP SORT ALGORITHM
» adalah algoritma sorting yang berdasarkan pada struktur data heap tree» Kompleksitas running time-nye : O(nlog(n))
Langkah : 1. Susun array A kedalam heap tree2. Ambil root pada heap tree, masukkan ke array3. Hapus elemen root (dengan mempertahankan sifat heap, lakukan
heapify jika tidak memenuhi sifat heap)4. Lakukan terus (langkah 2-3) hingga tree menjadi kosong
SDA - 2009
HEAP SORT ALGORITHM
Bekti.Rita.Sevenhot
ALGORITHMHEAPSORT (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)
SDA - 2009Bekti.Rita.Sevenhot
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)
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASIArray A = [1, 4, 89, 77, 12, 50, 23]
BuildHeap(A)
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASIArray A = [1, 4, 89, 77, 12, 50, 23]
BuildHeap(A)
insert 1
1
1 4 89 77 12 50 23
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASIArray A = [1, 4, 89, 77, 12, 50, 23]
BuildHeap(A)
insert 1
1
insert 4
1
4
4
1
4 1 89 77 12 50 23
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASIArray A = [1, 4, 89, 77, 12, 50, 23]
BuildHeap(A)
insert 1
1
insert 4
1
4
4
1
insert 89
4
1 89
89
1 4
89 1 4 77 12 50 23
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
insert 77
89
1 4
89
77 4
77 1
89 77 4 1 12 50 23
BuildHeap(A)
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
insert 77
89
1 4
89
77 4
77 1
insert 12
89
77 4
1 12
89 77 4 1 12 50 23
BuildHeap(A)
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
insert 77
89
1 4
89
77 4
77 1
insert 12
89
77 4
1 12
insert 50
89
77 4
1 12 50
89
77 50
1 12 4
89 77 50 1 12 4 23
BuildHeap(A)
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
insert 23
89
77 50
1 12 4
89 77 50 1 12 4 23
BuildHeap(A)
23
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
89
77 50
1 12 4
77 23 40 1 12 4 89
23
Delete root
23
77 50
1 12 4
77
23 50
1 12 4
Heapify
sorted
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
55 23 4 1 12 77 89
Delete root
77
23 50
1 12 4
Heapify
sorted
4
23 50
1 12
50
23 4
1 12
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
23 12 4 1 55 77 89
Delete root Heapify
sorted
50
23 4
1 12
12
23 4
1
23
12 4
1
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
12 1 4 23 55 77 89
Delete root Heapify
sorted
23
12 4
1
1
12 4
12
1 4
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
4 1 12 23 55 77 89
Delete root
sorted
12
1 4
4
1
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
1 4 12 23 55 77 89
Delete root
sorted
1
Delete root12
1 4
4
1
SDA - 2009
SIMULASI HEAP SORT
Bekti.Rita.Sevenhot
SIMULASI
1 4 12 23 55 77 89
sorted
Delete rootDelete root1
Delete root12
1 4
4
1
Selesai & Terima kasih
Bekti.Rita.Sevenhot SDA - 2009