42
Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) 1 Fasilkom UI Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 IKI 20100: Struktur Data & Algoritma 2007/2008 Ganjil Minggu 12 Priority Queue & Heap

IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

  • Upload
    lethu

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

Ruli Manurung & Ade Azurat(acknowledgments: Denny, Suryana Setiawan)‏

1

Fasilkom UI

Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100

IKI 20100: Struktur Data & Algoritma

2007/2008 – Ganjil – Minggu 12

Priority Queue & Heap

Page 2: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

2Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

A

B C

D E F G

H I J

A B C D E F G H I J0 1 2 3 4 5 6 7 8 9 10 11 12

Review

Complete binary tree:

sebuah tree adalah terisi penuh (complete), kecuali pada level terbawah yang terisi dari kiri ke kanan.

Page 3: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

3Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Priority Queue

Sebuah queue dengan perbedaan aturan sebagai berikut:

operasi enqueue tidak selalu menambahkan elemen pada akhir queue,

namun, meletakkannya sesuai urutan prioritas.

Page 4: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

4Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Binary Heap

Hanya diperbolehkan mengakses (membaca) item yang

minimum.

operasi dasar:

menambahkan item baru dengan kompleksitas waktu worst-case yang logaritmik.

menghapus item yang minimum dengan kompleksitas waktu worst-case yang logaritmik.

mencari item yang minimum dengan kompleksitas waktu konstan.

Page 5: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

5Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Structure Property

Data disimpan pada complete binary tree

tree selalu balance.

seluruh operasi dijamin O(log n) pada worst case

data disimpan menggunakan array atau java.util.Vector

Ordering Property

Heap Order:

• Parent Child

Properties (Aturan)‏

P

X

P X

Page 6: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

6Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

1

2

2 3

1

2

3

2

1

3

2

2

1

2

2

3

13

21 16

6 31 19 68

65 26 32

Mana yang Binary Heap?

Page 7: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

7Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Root pada indeks 0

anak kiri dari i pada

indeks 2i + 1

anak kanan dari i pada indeks 2i + 2 = 2(i + 1)‏

Parent dari i pada indeks

(i - 1) / 2

-1

0 1

43 3 3 2

65 58 40 42 4

Representasi Heap

0 1 43 3 3 2 65 58 40-1 42 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Page 8: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

8Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

40 42

-1

0 1

43 5 3 8

65 58 4 2

Insertion

Insert 2 (Percolate Up)‏

0 1 43 5 3 8 65 58 40-1 42 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14

231-1

Page 9: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

9Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

40 42

-1

0 1

43 5 2 8

65 58 4 3

Insertion

Insert 2 (Percolate Up)‏

0 1 43 5 3 8 65 58 40-1 42 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14

321-1 2

Page 10: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

10Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Insert 14

Insertion

14

13

21 16

24 31 19 68

65 26 32

Page 11: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

11Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Insert 14

Insertion

31

13

21 16

24 14 19 68

65 26 32

Page 12: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

12Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Insert 14

Insertion

31

13

14 16

24 21 19 68

65 26 32

Page 13: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

13Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

-1

0 1

43 3 3 2

65 58 40 42 4

Delete Minimum

Percolate Down

0 1 43 3 3 2 65 58 40-1 42 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Page 14: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

14Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

4

0 1

43 3 3 2

65 58 40 42

Delete Minimum

0 1 43 3 3 2 65 58 404 420 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Page 15: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

15Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

0

3 1

43 4 3 2

65 58 40 42

Delete Minimum: Completed

3 1 43 4 3 2 65 58 400 420 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Page 16: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

16Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

13

14 16

19 21 19 68

65 26 32 31

Delete Min (2)‏

Page 17: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

17Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

14 16

19 21 19 68

65 26 32 31

Delete Min (2)‏

Percolate Down

Page 18: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

18Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Delete Min (2)‏

14

16

19 21 19 68

65 26 32 31

Page 19: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

19Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

14

19 16

21 19 68

65 26 32 31

Delete Min (2)‏

Page 20: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

20Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Delete Min (2)‏

14

19 16

26 21 19 68

65 32 31

Page 21: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

21Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Delete Min (2)‏

14

19 16

26 21 19 68

65 31 32

Page 22: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

22Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Latihan

Simulasi operasi-operasi berikut pada Min Binary Heap:

Insert

• 40, 20, 5, 55, 76, 31, 3

Delete Min

Delete Min

Insert

• 10, 22

Delete Min

Delete Min

Gambarkan isi Binary Heap, setelah operasi terakhir.

Page 23: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

23Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Heap Constructor

public class VectorHeap implements PriorityQueue

{

protected Vector data;

public VectorHeap() { data = new Vector(); }

public VectorHeap(Vector v) {

int i;

data = new Vector(v.size());

// we know ultimate size

for (i = 0; i < v.size(); i++) {

// add elements to heap

add((Comparable) v.elementAt(i));

}

}

Page 24: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

24Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Heap’s Methods

protected static int parentOf(int i) {

return (i - 1) / 2;

}

protected static int leftChildOf(int i) {

return 2 * i + 1;

}

protected static int rightChildOf(int i) {

return 2 * (i + 1);

}

public Comparable peek() {

// findMin

return (Comparable) data.elementAt(0);

}

Page 25: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

25Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Removal & Insertion

public Comparable remove()

{

Comparable minVal = peek();

data.setElementAt (

data.elementAt (data.size() - 1), 0);

data.setSize (data.size() - 1);

if (data.size() > 1) pushDownRoot(0);

return minVal;

}

public void add(Comparable value) {

data.addElement (value);

percolateUp (data.size() - 1);

}

Page 26: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

26Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Percolate Down

protected void pushDownRoot (int root)

{

int heapSize = data.size();

Comparable value = (Comparable)

data.elementAt (root);

while (root < heapSize) {

int childpos = leftChildOf(root);

if (childpos < heapSize) {

// choose the bigger child

if ((rightChildOf(root) < heapSize) &&

(((Comparable) (data.elementAt(

childpos+1))).compareTo

((Comparable) (data.elementAt(

childpos))) < 0))

{

childpos++;

}

Page 27: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

27Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Percolate Downif (((Comparable)(data.elementAt(

childpos))).compareTo (value) < 0)

{

data.setElementAt (

data.elementAt(childpos), root);

root = childpos; // keep moving down

} else { // found right location

data.setElementAt(value, root);

return;

}

} else { // at a leaf! insert and halt

data.setElementAt (value, root);

return;

}

}

}

Page 28: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

28Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Percolate Up

protected void percolateUp (int leaf)

{

int parent = parentOf(leaf);

Comparable value =

(Comparable)(data.elementAt(leaf));

while (leaf > 0 && (value.compareTo

((Comparable)(data.elementAt(parent)))

‏((0 >

{

data.setElementAt (data.elementAt

(parent), leaf);

leaf = parent;

parent = parentOf(leaf);

}

data.setElementAt(value,leaf);

}

Page 29: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

29Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Heap’s Methods

public boolean isEmpty()

{

return data.size() == 0;

}

public int size()

{

return data.size();

}

public void clear()

{

data.clear();

}

public String toString()

{

return "<VectorHeap: " + data + ">";

}

Page 30: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

30Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Operasi fixHeap menerima complete tree yang tidak memenuhi heap order

dan memperbaikinya.

penambahan sebanyak N dapat dilakukan dengan O(n log n)‏

Operasi fix heap dapat dilakukan dengan O(n) !

20

61 17

12

55 37

45

25 64

63

83 73

92

47 21

Page 31: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

31Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Percolate down 6

20

61 17

12

55 37

45

25 64

63

83 73

92

47 21

Page 32: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

32Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Percolate down 5

20

61 17

12

55 37

45

25 64

63

83 73

92

47 21

25

45

Page 33: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

33Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Percolate down 4

20

61 17

12

55 37

25

45 64

63

83 73

92

47 21

Page 34: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

34Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Percolate down 3

20

61 17

12

55 37

25

45 64

63

83 73

92

47 21

20

17

Page 35: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

35Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Percolate down 2

17

61 20

12

55 37

25

45 64

63

83 73

92

47 21

Page 36: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

36Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Percolate down 1

17

61 20

12

55 37

25

45 64

63

83 73

92

47 2112

37

47

Page 37: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

37Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Fix Heap / Heapify

Percolate down 0

17

61 20

37

55 47

25

45 64

63

83 73

92

12 2117

20

92

12

Page 38: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

38Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

97

53 59

26 41 58 31

16 21 36

53 59 26 41 58 31 16 21 3697

0 1 2 3 4 5 6 7 8 9 10 11 12 13

Max Heap

Page 39: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

39Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

59

53 58

26 41 36 31

16 21

53 58 26 41 36 31 16 21 9759

0 1 2 3 4 5 6 7 8 9 10 11 12 13

97

Heap setelah deleteMax pertama

Page 40: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

40Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

58

53 36

26 41 21 31

16

53 36 26 41 21 31 16 59 9758

0 1 2 3 4 5 6 7 8 9 10 11 12 13

9759

Heap setelah deleteMax kedua

Page 41: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

41Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Heap Sort

1. Buat sebuah heap tree

2. ambil elemen pada posisi root dari heap setiap pengambilan

elemen, dan lakukan heapify.

Page 42: IKI 20100: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/16_binaryheap.pdf · IKI 20100: Struktur Data & Algoritma ... Heap Sort 1. Buat sebuah heap tree 2. ambil

42Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 – Ganjil – Minggu 12

Rangkuman

Priority queue dapat diimplementasi kan menggunakan binary

heap

Aturan-aturan pada binary heap

structure property

• complete binary tree

ordering property

• Heap order: Parent Child

Operasi pada binary heap

insertion: kompleksitas waktu O(log n) pada worst case

find min: kompleksitas waktu O(1)

delete min: kompleksitas waktu O(log n) pada worst case

Binary heap dapat digunakan untuk sorting