BINARY HEAP
DISUSUN OLEH :
AFIFAH NURLAILA
M0513004
4. RIZAL K. N. (M0512050)
JURUSAN INFORMATIKA
SURAKARTA
Baris pertama tersebut menyatakan letak kelas Heap berada dalam package heap.
Dalam satu package dapat menyimpan berbagai class maupun interface.
Baris ketiga tersebut menyatakan operasi pada java yang diimport ke dalam
program. Operasi yang dimaksud yaitu Arrays. Apabila kita tidak mengimportkan operasi
ini, maka Arrays tidak akan dapat digunakan dalam program.
Baris kelima sampai dengan kesembilan diatas merupakan suatu comment. Hal ini
ditandai dengan tanda awal /* dan tanda akhirnya */. Comment ini tidak akan diproses
oleh program. Ia hanya digunakan sebagai penjelas program untuk memudahkan user
memahami program tersebut.
Baris kesepuluh ini menyatakan nama class yang dibuat yaitu Heap dengan tipe
data public. Public berarti bahwa class ini dapat diakses oleh semua kelas lain asalkan
masih dalam package yang sama. Karena binary heap masih merupakan suatu tree maka
harus digunakan simbol khusus yang menyatakan bahwa dia adalah tree. Untuk itu
digunakanlah AnyTipe sebagai tandanya. Selain AnyTipe, simbol lain yang sering
digunakan yaitu T. Extends menyatakan bahwa class ini dapat mewarisi statement-
statement yang terdapat pada class Comparable.
Sedangkan untuk baris kedua puluh tujuh sampai tiga puluh empat merupakan
sebuah konstruktor yang sudah diisi oleh parameter AnyType[] array. Didalam konstruktor
ini, size dirubah nilainya menjadi panjang dari suatu array. Untuk heapnya dirubah
nilainya dengan AnyType[] new Comparable[panjang array ditambah 1].
Arraycopy merupakan suatu method yang digunakan untuk menyalin nilai elemen
larik. Arraycopy berada pada kelas System yang ada di paket java.lang. namun kelas
System tersebut tidak perlu diimpor karena secara otomatis akan diimpor oleh kompiler
Java saat digunakan. Sintak metoda arraycopy dari kelas System yaitu :
Baris diatas menyatakan method dengan nama buildHeap dengan tipe data void
(tidak menghasilkan nilai kembalian) yang hanya dapat diakses oleh kelas yang sama
(karena private). Didalam method ini akan dijalankan perulangan for dengan k sebagai
variabelnya. Jika sesuai maka ia akan menjalankan method percolatingDown dengan
parameter k.
Baris diatas merupakan sebuah method yang bernama heapSort dengan parameter
AnyType[] array. Tipe datanya void dan tipe aksesnya public. Method ini digunakan untuk
mensorting atau mengurutkan node.
Dengan cara :
1. Cari pathnya nilai yang mendekati node yang akan diinsert
2. Setelah mengetahui nodenya, pindahkan node yang akan diinsert ke node yang
kita cari pathnya tersebut
3. Lalu geser semua node dengan percolating down
Baris tersebut menyatakan method dengan nama isEmpty. isEmpty bertipe data
boolean sehingga menghasilkan kemungkinan true or false. Dapat diakses oleh semua
kelas dalam package yang sama. Method ini digunakan untuk mengecek apakah node
kosong ataukah tidak.
Baris kedelapan puluh sembilan tersebut menyatakan method dengan nama peek
yang datanya berasal dari AnyType dengan tipe akses public. Karena array pada java
dimulai dari 1 maka hasil kembaliannya menunjuk ke heap[1].
Baris diatas menyatakan method dengan nama deleteMin yang datanya berasal dari
AnyType dengan tipe data akses public.
Cara kerja dari deleteMin yaitu :
1. AnyType result = heap[0]; dijadikan sebagai rootnya terlebih dahulu untuk
memudahkan penghapusan
2. Kemudian tukar posisi root dengan last node
3. Selanjutnya kerjakan method percolatingdown
4. Lalu node minimal akan hilang (terhapus) secara sendirinya
Baris tersebut menyatakan method dengan nama insert berparameter AnyType x
yang bertipe data void dan dapat diakses oleh semua kelas dalam package yang sama. Cara
menginsertkan nodenya yaitu: dilihat terlebih dahulu apakah size=panjangnya heap -1.
Jika ia maka array akan menjadi dua kali lipatnya. Setelah itu dilakukanlah proses
percolating up. Yaitu node disisipkan keatas node-node yang lain hingga sesuai dengan
struktur binary heap.
Baris ke-117 sampai ke-121 menyatakan bahwa method dengan nama doubleSize
bertipe data void dan berdata akses private. Method ini digunakan untuk membuat panjang
array menjadi dua kali lipat panjang semula.
Baris diatas merupakan method dengan nama toString yang bertipe akses public
dan bertipe data String. Method ini akan menghasilkan Arrays.toString(heap).
Baris ke-127 sampai dengan baris ke-128 ini merupakan main class dari class
Heap. Main class ini digunakan untuk menjalankan program. Disini akan dihasilkan ke
layar monitor nilai dari array yang belum terurut dan nilai dari array yang telah diurutkan.
Untuk mengurutkan nilai array digunakanlah method heapSort. Pemanggilan method
heapSort tersebut menggunakan object tmp. Sehingga diawal dideklarasikan
Heap<Integer> tmp = new Heap<>(); Pembuatan object tmp menggunakan nama
classnya.
Array ke- 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Value 20 37 25 63 92 17 21 12 55 47 45 64 83 73
Sehingga :
Array ke- 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Value 12 17 20 21 25 37 45 47 55 63 64 73 83 92