Heap And Heapsort
-
Upload
truephoenix -
Category
Documents
-
view
226 -
download
0
Transcript of Heap And Heapsort
-
7/21/2019 Heap And Heapsort
1/22
Claudio Franciscus
-
7/21/2019 Heap And Heapsort
2/22
Outline Heap
Definisi
Operasi max_heapify
build_max_heap
Heapsort
Algoritma Kompleksitas
Implementasi
-
7/21/2019 Heap And Heapsort
3/22
Referensi Cormen, Thomas E, Charles E Leiserson, Ronald L
Rivest, and Clifford Stein. "Heapsort." Introduction toAlgorithm. 3rd ed. Cambridge: MIT, 2009. pp 151-169.
-
7/21/2019 Heap And Heapsort
4/22
Claudio Franciscus
-
7/21/2019 Heap And Heapsort
5/22
Heap
Definisi Sifat:
Max-heap
Min-heap
-
7/21/2019 Heap And Heapsort
6/22
Heap
Tree root > index pertama
parent(i) = i/2 > index parent
left(i) = 2i > index child kiri right(i) = 2i+1 > index child kanan
leaf > n/2+1 n > node tanpa child
heap_size
-
7/21/2019 Heap And Heapsort
7/22
Heap
Operasi build_max_heap
max_heapify
heapsort
-
7/21/2019 Heap And Heapsort
8/22
Max_Heapify
Algoritma Max_Heapify(A,i)
Asumsi: subtree > root left(i), right(i) > Max_Heap
Jika A[i] melanggar sifat Max_Heap,swap A[i], child berelement terbesar
panggil Max_Heapify(A,child)
-
7/21/2019 Heap And Heapsort
9/22
Max_Heapify
Pseudocodel= left(i)
r = right(i)
if (l A[i])then largest = l else largest = i
if (r A[largest])
then largest = r
if largest i
then exchange A[i] and A[largest]
Max_Heapify(A, largest)
-
7/21/2019 Heap And Heapsort
10/22
Max_Heapify
Example heap_size(A) = 10 max_heapify(A,2)
l = left(2) = 4
r = right(2) = 5 l A[2]
largest = l
r heap_size
largest == i
-
7/21/2019 Heap And Heapsort
11/22
Max_Heapify
Kompleksitas Running time:
pada Level 1 > O(1)
pada Level 2 > O(2).
.
.
pada Level teratas O(h) > O(h)
2^ (h)
2^ (h - 1)
2^ (h - 2)
.
.
21
leaf
dengan h:
2h
-
7/21/2019 Heap And Heapsort
12/22
Build_Max_Heap Mengubah array tidak teratur menjadi Max_Heap
Build_Max_Heap(A)for i = n/2 downto 1
do Max_Heapify(A,i)
-
7/21/2019 Heap And Heapsort
13/22
Build_Max_Heap
Example build_max_heap(A)
max_heapify(A,5)
no change max_heapify(A,4)
swap A[4], A[8]
max_heapify(A,3)
swap A[3], A[7] max_heapify(A,2)
swap A[2], A[5]
swap A[5], A[10]
max_heapify(A,1)
swap A[1], A[2] swap A[2], A[4]
swap A[4], A[9]
-
7/21/2019 Heap And Heapsort
14/22
Build_Max_Heap
Kompleksitas Build_Max_Heap(A)
for i = n/2 downto 1
do Max_Heapify(A,i) Max_Heapify > level 1 > O(1)
> level 2 > O(2)
> Level l > O(l)
Jumlah node > Level 1 > n/4
> Level 2 > n/8
> Level 2log n> 1
-
7/21/2019 Heap And Heapsort
15/22
Build_Max_Heap
Kompleksitas Total running time dapat dijumlahkan:
n/4(1c) + n/8(2c) + n/16 (3c) + + 1(2log n c)
Jika n/4 = 2k
maka:c 2k( 1/20+ 2/21+ 3/22+ + (k+1)/2k)
Karena total jumlah di dalam kurung > konstan,maka, kompleksitas Build_Max_Heap > O(n)
-
7/21/2019 Heap And Heapsort
16/22
Claudio Franciscus
-
7/21/2019 Heap And Heapsort
17/22
HeapSort
Algoritma1. Lakukan Build_Max_Heap dari array yang tidak
teratur
2.Swap element A[1](terbesar) dan A[n](terakhir)3. Pisahkan elemen terakhir dengan mengurangi Heap-size
4. Karena root (A[1]) menyalahi aturan lakukan
Max_Heapify(A,1)5. Kembali ke Step 2 jika Heap-size 0
-
7/21/2019 Heap And Heapsort
18/22
HeapSort
Example
-
7/21/2019 Heap And Heapsort
19/22
HeapSort
Kompleksitas Running Time:
n iterasi > heap_size = 0
tiap iterasi > swap dan Max_Heapifykompleksitas / iterasi > O(2log n)
Keseluruhan > O(n 2log n)
-
7/21/2019 Heap And Heapsort
20/22
Claudio Franciscus
-
7/21/2019 Heap And Heapsort
21/22
Implementasi Java
-
7/21/2019 Heap And Heapsort
22/22
Claudio Franciscus