heapsort - · pdf fileadjustment agar binary tree tetap menjadi minimal head algoritma:...

14
Heapsort Heapsort Dr. Taufik Fuadi Abidin, S.Si., M.Tech Irvanizam Zamanhuri, M.Sc Jurusan Informatika FMIPA Universitas Syiah Kuala www.informatika.unsyiah.ac.id/tfa www.informatika.unsyiah.ac.id/irvanizam Bahan Ajar Struktur Data dan Algoritma Bahan Ajar Struktur Data dan Algoritma

Upload: phamanh

Post on 05-Feb-2018

243 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

HeapsortHeapsort

Dr. Taufik Fuadi Abidin, S.Si., M.Tech

Irvanizam Zamanhuri, M.Sc

Jurusan InformatikaFMIPA Universitas Syiah Kuala

www.informatika.unsyiah.ac.id/tfawww.informatika.unsyiah.ac.id/irvanizam

Bahan Ajar Struktur Data dan AlgoritmaBahan Ajar Struktur Data dan Algoritma

Page 2: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Outline PertemuanOutline Pertemuan

Heapsort

Contoh Penggunaan

Diskusi

Sumber: http://cis.stvincent.edu/html/tutorials/swd/heaps/heaps.html

Page 3: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

HeapsortHeapsort

Heapsort dilakukan dengan cara membangun struktur data heap dan kemudian menerapkan langkah menghapus node heap.

Pada awalnya, kondisi heap kosong. Kemudian, node heap di-insert satu per satu.

Cara alternatif adalah, menampung data yang akan diurutkan dalam array, kemudian node pada bagian root di hapus. Jika heap adalah minimal heap, maka data pada root adalah data terkecil.

Page 4: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Kompleksitas HeapsortKompleksitas Heapsort

Dalam kasus rata-rata atau kasus terjelek, kompleksitas dari heapsort adalah O(n log n).

Komplesitas tersebut cukup baik untuk metode pengurutan.

Pada kasus rata-rata, quicksort juga memiliki kompleksitas O(n log n), namun kadang-kadang bila kasus terjelek terjadi, kompleksitas quicksort dapat berubah menjadi O(n2).

Page 5: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Contoh HeapsortContoh Heapsort

Konversi array menjadi Heap. Tentukan node parent yang terakhir dalam array, yaitu (heapsize – 2)/2. Pada contoh di atas, node K adalah parent terakhir. Kemudian, lakukan FilterDown dari indeks parent terakhir s/d indeks 0. Pada contoh di atas, dari indeks 3, 2, 1, kemudian 0.

Page 6: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Array Array -- to to -- HeapHeap

Tree tersebut adalah Binary Tree namun belum merupakan minimal heap yang benar. Kemudian terapkan FilterDown pada node dimana parent terakhir berada, yaitu K

Page 7: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Lakukan FilterDownLakukan FilterDown

Setelah FilterDown selesai untuk node K, lanjutkan proses yang sama untuk indek 2 yaitu node C.

Page 8: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Lakukan FilterDownLakukan FilterDown

Setelah FilterDown selesai untuk node K, lanjutkan proses yang sama untuk indek 2 yaitu node C.

Page 9: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Lakukan FilterDownLakukan FilterDown

Setelah FilterDown selesai untuk node C, lanjutkan proses yang sama untuk indek 1 yaitu node S.

Page 10: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Lakukan FilterDownLakukan FilterDown

Hasil: Sebuah Heapterbentuk! Selanjutnya, remove node A menggunakan algoritma menghapus node dalam Heap.

Page 11: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Remove Node dari HeapRemove Node dari Heap

Remove selalu dimulai dari root karena node root adalah node dengan nilai terkecil

Masalahnya adalah bagaimana melakukan adjustment agar binary tree tetap menjadi minimal head

Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir. Kemudian fungsi FilterDown dipanggil untuk memeriksa dari root sd node leaf agar setiap node masih memenuhi syarat heap.

Page 12: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Remove Node Pada RootRemove Node Pada Root

Node C ditukar dengan node A, ukuran array diasumsikan berkurang 1 yaitu dari indeks 0 sd 7. Kemudian, tentukan indeks parent terakhir, dan ulangi proses .

Page 13: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Hasil AkhirHasil Akhir

Data yang terurut descending order

Page 14: Heapsort -  · PDF fileadjustment agar binary tree tetap menjadi minimal head Algoritma: Remove node root dan ganti node tersebut dengan node pada posisi paling akhir

Questions &

Discussion