Heap And Heapsort

download Heap And Heapsort

of 22

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