My first Magazine pemrograman-kompetitif-dasar | Page 125

10.2 Heap Algoritma 54 Fungsi-fungsi pembantu yang memudahkan implementasi heap . function GET P ARENT (x) 2: return (x − 1) div 2 3: end function 1: function GET L EFT (x) return 2x + 1 6: end function 4: 5: function GET R IGHT (x) 8: return 2x + 2 9: end function 7: Algoritma 55 Prosedur untuk melakukan push pada heap . 1: 2: 3: 4: 5: 6: 7: 8: 9: procedure PUSH (val) i ← size arrHeap[i] ← val while (i > 0) ∧ (arrHeap[i] > arrHeap[ GET P ARENT (i)]) do SWAP (arrHeap[i], arrHeap[ GET P ARENT (i)]) i ← GET P ARENT (i) end while size ← size + 1 end procedure Algoritma 56 Prosedur untuk melakukan pop pada heap . 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: procedure POP () SWAP (arrHeap[0], arrHeap[size − 1]) size ← size − 1 . Lakukan pembuangan pada elemen terakhir i ← 0 swapped ← true while swapped do . Perulangan untuk perbaikan struktur heap maxIdx ← i if ( GET L EFT (i) < size) ∧ (arrHeap[maxIdx] < arrHeap[ GET L EFT (i)]) then maxIdx ← GET L EFT (i) end if if ( GET R IGHT (i) < size) ∧ (arrHeap[maxIdx] < arrHeap[ GET R IGHT (i)]) then maxIdx ← GET R IGHT (i) end if SWAP (arrHeap[i], arrHeap[maxIdx]) swapped ← (maxIdx 6 = i) . true bila terjadi pertukaran i ← maxIdx end while end procedure 115