LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA II
MODUL
HEAP
Disusun Oleh :
Syukur Jaya Mendrofa 201501072
Kelas: C
Dosen Pengampu :
Oskar Ika Adi Nugroho, ST., MT
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER “YOS SUDARSO”
PURWOKERTO
BAB I
DASAR TEORI
1. Pengertian Heap
Pohon heap adalah struktur data yang berbentuk pohon yang memenuhi sifat-sifat heap yaitu jika B adalah anak dari A, maka nilai yang tersimpan di simpul A lebih besar atau sama dengan nilai yang tersimpan di simpul B. Hal ini mengakibatkan elemen dengan nilai terbesar selalu berada pada posisi akar, dan heap ini disebut max heap. (Bila perbandingannya diterbalikkan yaitu elemen terkecilnya selalu berada di simpul akar, heap ini disebut adalah min heap). Karena itulah, heap biasa dipakai untuk mengimplementasikan priority queue.
Operasi-operasi yang digunakan untuk heap adalah :
Delete-max atau delete-min: menghapus simpul akar dari sebuah max- atau
minheap.
Increase-key atau decrease-key : mengubah nilai yang tersimpan di suatu simpul.
Insert: menambahkan sebuah nilai ke dalam heap.
Merge: menggabungkan dua heap untuk membentuk sebuah heap baru yang berisi
semua elemen pembentuk heap tersebut.
2. Jenis-jenis Heap
1. Binary heap : Binary heap adalah heap yang dibuat dengan menggunakan pohon biner.
2. Binomial heap : Binomial heap adalah heap yang dibuat dengan menggunakan pohon binomial. Pohon binomial bila didefinisikan secara rekursif adalah:
Sebuah pohon binomial dengan tinggi 0 adalah simpul tunggal.
Sebuah pohon binomial dengan tinggi k mempunyai sebuah simpul akar yang
anak-anaknya adalah akar-akar pohonpohon binomial dengan tinggi k-1,k- 2, …,2,1,0.
Fibonacci heap adalah kumpulan pohon yang membentuk minimum heap.
Fibonacci heap adalah ketika menggabungkan heap cukup dengan menggabungkan dua list pohon.
BAB II
LISTING PROGRAM
Analisa Program
Program ini menggunakan STL (Standard Template Library) dan program ini juga
merupakan program untuk mengurutkan data.
#include <iostream> => #include adalah suatu perintah yang digunakan untuk mengatur compiler agar membaca berkas header yang disertakan dibelakang kata
include yakni dalam program ini <iostream> saat pelaksanaan kompilasi.
#include <algorithm> merupakan STL (Standard Template Library) yang
digunakan untuk memanipulasi data.
#include <vector> => merupakan STL (Standard Template Library) sebuah
container vector menyimpan dan mengelola objek-objeknya di dalam sebuah array dinamis. Karena array adalah sebuah struktur data akses acak, elemen – elemen sebuah vector dapat diakses secara acak. Nama file header yang memuat kelas vector adalah vector. Jadi, untuk menggunakan container vector di dalam program, program harus mencantumkan pernyataan #include<vector>.
using namespace std; => menyatakan kepada compiler bahwa program
menggunakan namespace bernama std; namespace fungsinya untuk mengelompokkan elemen-elemen ke dalam sebuah nama. std adalah nama bawaan yang digunakan pada semua pustaka standar C++. Contohnya untuk menampilkan keluaran berupa cout, endl.
int main() => merupakan awal dari fungsi utama.
{ => awal tubuh dari fungsi utama
int mynts[ ] = { 20, 30, 40, 25, 15 }; => merupakan variable array dinamis yang
akan di kelola dalam container vector.
cout << "Isi dari Heap 20, 30, 40, 25, 15"; => untuk menampilkan (Isi dari Heap
vector<int> v(mynts, mynts + 5); => merupakan STL (Standard Template Library)
sebuah container vector menyimpan dan mengelola objek-objeknya di dalam sebuah array dinamis.
cout << '\n'; => masuk new line.
make_heap(v.begin(), v.end()); => merupakan template.
cout << "Nilai tertinggi dalam heap = " << v.front() << '\n'; => untuk menampilkan
(Nilai tertinggi dalam heap = ) setelah itu menampilkan isi yang telah disimpan pada variable << v.front( ) << lalu masuk new line.
cout << '\n'; => masuk new line.
cout << "POP 40\n"; => untuk menampilkan (POP 40) lalu masuk new line.
pop_heap(v.begin(), v.end()); v.pop_back(); => merupakan template.
cout << "Nilai tertinggi dalam heap setelah POP = " << v.front() << '\n'; => untuk
menampilkan (Nilai tertinggi dalam heap setelah POP = ) setelah itu menampilkan isi yang telah disimpan pada variable << v.front( ) << lalu masuk new line.
cout << '\n'; => masuk new line.
cout << "PUSH 50\n"; => untuk menampilkan (PUSH 50) lalu masuk new line.
v.push_back(50); push_heap(v.begin(), v.end()); => merupakan template.
cout << "Nilai tertinggi dalam heap setelah PUSH : " << v.front() << '\n'; ; =>
untuk menampilkan (Nilai tertinggi dalam heap setelah PUSH = ) setelah itu menampilkan isi yang telah disimpan pada variable << v.front( ) << lalu masuk new line.
sort_heap(v.begin(), v.end()); => merupakan template.
cout << "final sorted range : "; untuk menampilkan (final sorted range)
for (unsigned i = 0; i < v.size(); i++) => fungsi pengulangan untuk mengurutkan
data yang telah dimasukkan berdasarkan nilainya.
cout << ' ' << v[i]; => menampilkan data yang telah di simpan dan diurutkan.
cout << '\n'; => masuk new line. cout << '\n'; => masuk new line.
return 0; => Pernyataan bahwa nilai balik program adalah nol. Nol biasa digunakan
untuk menyatakan bahwa program berhasil melaksanakan tugas yang diembannya.