๐ŸŒฟPraktikum 1

Implementasi Heap dengan ArrayList

Deskripsi

Pada praktikum ini, Anda akan membuat struktur data heap untuk kasus maximum prioritu queuing. Sehingga, tree akan disusun mulai dari yang terbesar. Selain itu, struktur heap yang akan Anda buat akan diterapkan dengan menggunakan ArrayList.

Langkah Praktikum

  • Buatkan kelas Heap

  • Tambahkan atribut heap dengan tipe List<Integer>

  • Tambahkan juga konstruktor untuk kelas Heap.

  • Jangan lupa, import package yang dibutuhkan.

import java.util.ArrayList;
import java.util.List;

public class Heap {
    private List<Integer> heap;

    public Heap() {
        this.heap = new ArrayList<>();
    }
  • Tambahkan method getHeap() pada kelas Heap.

  • Selanjutnya, untuk melakukan pencekan terhahdap child sebelah kiri, buat method leftChild(int index) . Pada kasus ini, kita akan berasumsi bahwa index heap dimulai dari 0. sehingga nilai child kiri adalah Lindex=2โˆ—i+1L_{index} = 2*i+1.

  • Tambakan pula method untuk pengecekan child sebelah kanan. Dikarenakan index heap dimulai dari 0, maka nilai index child sebelah kanan adalah Rindex=2โˆ—i+2R_{index} = 2 * i + 2.

  • Selanjutnya, untuk mengetahui index parent dari sebuah child, buatlah method bantuan dengan nama parent(int index).

  • Pada heap, diperlukan proses menukar nilai ketika nilai pada susunan heap tidak valid. Oleh karena buat, buatlah method swap(int index1, int index2) yang akan digunakan untuk proses swap.

  • Sampai pada tahap ini, Anda telah mengimplementasikan fungsi-fungsi dasar pada struktur data heap. Fungsi-fungsi tersebut nantinya akan digunakan pada proses penambahan dan pengurangan data.

  • Untuk menambahkan data, buatlah method insert(int value).

  • Selanjutnya, untuk mengurani nilai pada heap, buatlah method remove(). Pada kasus ini, Anda membuat maximum priority queuing, sehingga, hanya node root yang akan dikeluarkan terlebih dahulu.

  • Setelah proses penghapusan, heap harus menyusun kembali struktur data yang ada didalamnya agar tetap valid dengan mempertahankan struktur complete tree. Tambakan method sinkDown(int index) untuk menerapakan solusi dari kondisi tersebut.

  • Untuk menguji apakah heap yang dibuat dapat berjalan sesuai dengan kaidah heap, buatlah kelas HeapMain yang berisi main method untuk melakukan pengujian.

  • Jalankan program dan validasi hasilnya.

Pertanyaan

  • Pada method swap terdapat method set yang dipanggil oleh objek heap. Apa fungsi dari set?

  • Pada method remove digunakan nilai kembalian (return value) yaitu Integer. Apa perbedaan nilai kembalian antara Interger dan int? Mengapa digunakan Integer?

  • Perhatikan method sinkDown baris ke-17 sampai ke-20. Proses apa yang dijalankan pada baris tersebut?

Last updated