Minggu, 27 November 2016

Algoritma HeapSort

Definisi
Heap Sort adalah sebuah algoritma pengurutan yang paling lambat dari algoritma yang memiliki kompleksitas O(n log n). Tetapi tidak seperti algoritma Merge Sort dan Quick Sort, algoritma Heap Sort tidak memerlukan rekursif yang besar atau menggunakan banyak tabel (array). Oleh karena itu, Heap Sort adalah pilihan yang baik untuk sebuah kumpulan data yang besar.
Algoritma ini bekerja dengan menentukan elemen terbesar (atau terkecil) dari sebuah daftar elemen, dan diletakkan pada akhir (atau awal) dari daftar tersebut. Heap sort menyelesaikan sebuah pengurutan menggunakan struktur data yang disebut heap.
Algoritma ini dimulai dengan membangun sebuah array heap dengan membangun tumpukan dari kumpulan data, lalu memindahkan data terbesar ke bagian belakang dari sebuah tabel hasil. Setelah itu, array heap dibangun kembali, kemudian mengambil elemen terbesar untuk diletakkan di sebelah item yang telah dipindahkan tadi. Hal ini diulang sampai array heap habis.
Jadi secara umum, algoritma ini memerlukan dua buah tabel; satu tabel untuk menyimpan heap, dan satu tabel lainnya untuk menyimpan hasil. Walaupun lebih lambat dari Merge Sort atau Quick Sort, algoritma ini cocok untuk digunakan pada data yang berukuran besar.


PSEUDOCODE

function heapsort(a, count) {
var int start := count ÷ 2 – 1
end := count – 1
while start ≥ 0
sift(a. start, count)
start := - 1
while end > 0
swap(a[end], a[0])
sift(a, 0, end)
end := end – 1
}
function sift(a. start, count) {
var int root := start, child
while root * 2 + 1 < count {
child := root * 2 + 1
if child < count – 1 and
a[child] < a[child +]
child := child + 1
if a[root]> a[child]
swap([root],  a[child])
root := child
else
return
}
}

Contoh
Terdapat sebuah array bilangan bulat yang terdiri atas 5 buah anggota dengan nilai data 5, 3, 1, 9, 8. Urutkan data di atas secara ascending dengan menggunakan metode heap sort.
Jawab:
1.    Pertama, umpamakan array tersebut sebagai suatu CBT (Complete Binary Tree), yaitu

 

2.    Selanjutnya algoritma metoda heapify dilakukan dengan iterasi dari subtree node ke-2 sampai ke akar. Pada Complete Binary Tree di atas menghasilkan operasi-operasi pertukaran sebagai berikut:
i.    Subtree node ke-2: pertukaran 3 dengan 8
ii.    Subtree node ke-1: pertukaran 8 dengan 9
iii.    Subtree node ke-0: pertukaran 5 dengan 9


 







Semua perubahan di atas terjadi dalam array yang bersangkutan, sehingga pada akhirnya diperoleh tree terakhir yang merupakan heap tree. Sementara itu, dalam iterasi yang melakukan/menerapkan algoritma metoda remove( ) dan algoritma metoda reheapify() akan terjadi pemrosesan berikut:

1.    Setelah 9 di-remove, dan 3 menggantikan posisi yang ditinggalkan oleh 9, maka selanjutnya terjadi reheapify: penukaran 3 dengan 5, 3 dengan 8, dan 5 dengan 8. Sementara, data yang telah terurut adalah 9.





2.    Selanjutnya 8 di-remove, lalu 3 menggantikan posisi yang ditinggalkan oleh 8, dan selanjutnya terjadi reheapify: penukaran 3 dengan 5. Data yang telah terurut adalah 8, 9.



3.    Selanjutnya 5 di-remove, lalu 1 menggantikan posisi yang ditinggalkan oleh 5, dan selanjutnya terjadi reheapify: penukaran 1 dengan 3. Data yang telah terurut adalah 5, 8, 9.



4.    Selanjutnya 3 di-remove dan 1 menggantikan posisi 3. Karena node yang tersisa hanya 1, maka tidak terjadi reheapify. Data yang telah terurut adalah 3, 5, 8, 9.
5.    Langkah terakhir adalah 1 di-remove, dengan demikian tidak ada lagi node yang tersisa, sehingga seluruh data telah terurut yaitu 1, 3, 5, 8, 9.

Sekian Postingan kali ini. Semoga bermanfaat.

Related Posts:

  • Algoritma Sequential Search dan String Matching Pada kali ini saya akan membahas tentang algoritma sequential search dan string matching. Algortima jenis ini menerapkan prinsip kerja brute force. Algoritma sequential search disebut juga linear search adalah sebuah a… Read More
  • Algoritma HeapSortDefinisi Heap Sort adalah sebuah algoritma pengurutan yang paling lambat dari algoritma yang memiliki kompleksitas O(n log n). Tetapi tidak seperti algoritma Merge Sort dan Quick Sort, algoritma Heap Sort tidak memerlukan rek… Read More
  • Input-Pemrograman A.   Definisi Input Input adalah fungsi yang memiliki kegunaan untuk menyimpan data ke dalam suatu variable untuk kemudian mendapatkan perintah selanjutnya. B.    Macam-macam Input 1.  … Read More
  • Pengenalan Bahasa PemrogramanPostingan kali ini sekaligus menjadi tugas yang saya dapat di matakuliah Pengantar Sistem. Disini saya akan membahas tentang bahasa pemrograman secara umum sebagai pengenalan saja. DEFINISI Bahasa Pemrograman (Programing L… Read More
  • Aplikasi-Aplikasi yang Ada di OS Linux UbuntuHai semuanya. kali ini saya akan berbagi tentang program-program yang ada di OS LINUX Ubuntu dana saya menggunakan Ubuntu versi 16.04. Postingan kali ini termotivasi oleh tugas yang diberikan oleh dosen saya di mata kuliah P… Read More

1 komentar:

  1. Menangkan Jutaan Rupiah dan Dapatkan Jackpot Hingga Puluhan Juta Dengan Bermain di www(.)SmsQQ(.)com

    Kelebihan dari Agen Judi Online SmsQQ :
    -Situs Aman dan Terpercaya.
    - Minimal Deposit Hanya Rp.10.000
    - Proses Setor Dana & Tarik Dana Akan Diproses Dengan Cepat (Jika Tidak Ada Gangguan).
    - Bonus Turnover 0.3%-0.5% (Disetiap Harinya)
    - Bonus Refferal 20% (Seumur Hidup)
    -Pelayanan Ramah dan Sopan.Customer Service Online 24 Jam.
    - 4 Bank Lokal Tersedia : BCA-MANDIRI-BNI-BRI

    8 Permainan Dalam 1 ID :
    Poker - BandarQ - DominoQQ - Capsa Susun - AduQ - Sakong - Bandar Poker - Bandar66

    Info Lebih Lanjut Hubungi Kami di :
    BBM: 2AD05265
    WA: +855968010699
    Skype: smsqqcom@gmail.com

    BalasHapus