0% menganggap dokumen ini bermanfaat (0 suara)
185 tayangan4 halaman

Heap Sort

1. Heap sort adalah algoritma pengurutan data berdasarkan perbandingan yang termasuk seleksi sort dengan kompleksitas O(n log n). Algoritma ini mengurutkan data dengan membangun heap tree dari data masukan.

Diunggah oleh

Adrian Hartanta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
185 tayangan4 halaman

Heap Sort

1. Heap sort adalah algoritma pengurutan data berdasarkan perbandingan yang termasuk seleksi sort dengan kompleksitas O(n log n). Algoritma ini mengurutkan data dengan membangun heap tree dari data masukan.

Diunggah oleh

Adrian Hartanta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 4

1.

Heap Sort

HeapSort adalah algoritma pengurutan data berdasarkan perbandingan, dan termasuk golongan
selection sort. Walaupun lebih lambat daripada quick sort pada kebanyakan mesin , tetapi heap sort
mempunyai keunggulan yaitu kompleksitas algoritma pada kasus terburuk adalah n log n.
Algoritma pengurutan heap sort ini mengurutkan isi suatu larik masukan dengan memandang
larik masukan sebagai suatu Complete Binary Tree (CBT). Setelah itu Complete Binary Tree (CBT)
ini dapat dikonversi menjadi suatu heap tree. Setelah itu Complete Binary Tree (CBT) diubah menjadi
suatu priority queue.
Algoritma pengurutan heap dimulai dari membangun sebuah heap dari kumpulan data yang
ingin diurutkan, dan kemudian menghapus data yang mempunyai nilai tertinggi dan menempatkan
dalam akhir dari larik yang telah terurut. Setelah memindahkan data dengan nilai terbesar, proses
berikutnya adalah membangun ulang heap dan memindahkan nilai terbesar pada heap tersebut dan
menempatkannya dalam tempat terakhir pada larik terurut yang belum diisi data lain. Proses ini
berulang sampai tidak ada lagi data yang tersisa dalam heap dan larik yang terurut penuh. Dalam
implementasinya kita membutuhkan dua larik satu untuk menyimpan heap dan satu lagi untuk
menyimpan
data
yang
sudah
terurut.
Tetapi untuk optimasi memori, kita dapat menggunakan hanya satu larik saja.
Yaitu dengan cara menukar isi akar dengan elemen terakhir dalam heap tree.
Jika memori tidak menjadi masalah maka dapat tetap menggunakan dua larik yaitu larik masukan dan
larik hasil.
Algoritma Untuk Heap Sort
Berikut merupakan algoritma dari heap sort :
1.
Representasikan Heap dengan n elemen dalam sebuah array A[n]
2.
3.
4.
5.
6.
7.
8.

Elemen root tempatkan pada A[1]


Elemen A[2i] adalah node kiri dibawah A[i]
Elemen A[2i+1] adalah node kanan dibawah A[i]
Contoh: array A=[16 14 10 8 7 9 3 2 4 1] mewakili binary-heap sbb:
Ambil nilai root (terbesar) A[1..n-1] dan pertukarkan dengan elemen terakhir dalam array, A[n]
Bentuk Heap dari (n-1) elemen, dari A[1] hingga A[n-1]
Ulangi langkah 6 dimana indeks terakhir berkurang setiap langkah.
Contoh Heap Sort
Terdapat data 16, 14, 10, 8, 7, 9, 2, 4, 1. Data-data tersebut dimasukkan dalam tree secara langsung
dari atas ke bawah dan dari kiri ke kanan.

Selanjutnya dilakukan heap sort seperti pada gambar berikut :

2. RED BLACK TREE


Red-Balck Tree atau disebut juga sebagai RBT adalah sebuah binary search tree dimana tiap
simpul memiliki atribut warna yang bernilai merah atau hitam.
RBT juga berguna dalam pemrograman fungsional karena RBT merupakan salah satu struktur
data yang paling persistent, digunakan untuk membuat associative array dan himpunan yang bhisa
mengambil kembali versi sebelumnya setelah perubahan. Versi persistent dari RBT memerlukan
tambahan
ruang
O(log
n)
untuk
setiap
insersi
atau
delesi,
selain
waktu.
RBT isometri dari pohon 2-3-4. Artinya, untuk setiap 2-3-4 pohon, terdapat paling sedikit
satu satu RBT dengan elemen data yang berurutan sama. Operasi insersi dan delesi pada pohon 2-3-4
equivalen dengan color-flipping (pertukaran warna) dan rotasi pada RBT. Ini membuat pohon 2-3-4
alat yang penting untuk memahami logika dibalik RBT, hal ini pula yang membuat berbagai text
algoritma memperkenalkan pohon 2-3-4 sebelum RBT walaupun pohon 2-3-4 lebih jarang digunakan.
Red Black Tree adalah suatu BST( Binary Search Tree) dimana node-node dan edge-edge
memiliki warna merah atau hitam. Warna dari root selalu hitam. Warna dari edge yang
menghubungkan ayah dengan anaknya selalu berwarna sama dengan warna node anak tersebut. Selain
atribut yang dimiliki oleh BST, kita memerlukan persyaratan berikut untuk memnentukan

validitas RBT :

1.
2.
3.
4.
5.

7.
8.

1.
2.
3.

4.
5.

Aturan pada Red Black Tree :


Setiap simpul/node adalah berwarna merah atau hitam
Akar/Root selalu berwarna hitam
Nilai sebuah node adalah lebih besar anak kirinya dan lebih kecil dari anak kanannya.(peraturan tree
biasa)
Jika node berwarna merah, anaknya harus berwarna hitam
Node berwarna merah secara berturut-turut tidak ddiperbolehkan.
Setiap path dari node yang menuju ke nil harus mengandung nilai yang sama dengan node yang
berwarna hitam.

Tree dikatakan setimbang jika selisih level dari anak kiri dan anak kanan maksimal dua.
Node dibawah root yang berada pada level yang sama disebut sibling.
Aturan Insert pada Red Black Tree :
Setiap node baru yang disisipkan kedalam tree akan diberi warna merah.
Jika kita memberi warna hitam pada node baru yang masuk, maka jumlah node dari root akan
berbeda.
Jika kita memasukkan node baru yang berwarna merah kedalam parent yang berwarna hitam tidak
akan menjadi masalah, yang menjadi masalah adalah jika kita menyisipkan node baru ke dalam parent
yang berwarna merah
Jika parent berwarna merah kita akan membuat dua node merah yang berurutan, jadi kita harus
melakukan rotasi atau pewarnaan ulang.
Hal penting yang harus diingat adalah node yang tidak mempunyai daun harus berwarna hitam.

3. Binary search tree


Jika kita ingin mengurutkan suatu data, maka kita harus memikirkan cara yang efektif agar
permasalahan yang kita hadapi cepat selesai. Salah satu caranya dengan menggunakan metode
Binary Search Trees. Ini merupakan suatu cara pengurutan data dengan membagi data menjadi dua
dan mencari titik tengan sebagai patokannya.
Misal kita ingin mengurutkan suatu data tentang ketinggian sekelompok orang. Jika secara
konvensional akan menghabiskan waktu yang lama, maka digunakanlah metode ini. Cara
pengurutannya terserah kita mau dari pendek ke tinggi maupun sebaliknya. Pertama kita kumpulkan
daftar ketinggian dari sekelompok orang. Lalu pilih titik tengah sebagai acuan(missal dengan
ketinggian 5 kaki, 6 inchi). Kita bandingkan tinggi acuan dengan tinggi orang pertama. Misal kita
menggunakan pengurutan dari pendek ke tinggi. Jika lebih tinggi dari acuan maka akan bergeser ke
kanan, jika lebih pendek akan bergeser ke kiri acuan.
MENGOPTIMALKAN TREES
Jika ternyata tree yang kita kita buat membentuk suatu urutan angka contoh 1,2,3,4,5, maka terlihat
seperti sebuah linked list.
Kondisi ini menyebabkan tree tidak memiliki subpohon karena berbentuk linier. Ini merupakan
kondisi yang tidak wajar. Ada AVL trees, splay trees, dan red-black trees yang merupakan aplikasi
special di BSTs yang dapat menunjukkan perputaran node ketika mereke menambahkan data agar
susunan tree lebih seimbang,

Anda mungkin juga menyukai