My first Magazine pemrograman-kompetitif-dasar | Page 128

10 Struktur Data NonLinear for i ← bN/2c − 1 down to 0 do HEAPIFY (i) 9: end for 10: end procedure . Lakukan proses heapify 7: 8: 5 3 4 2 1 Gambar 10.19: Ilustrasi urutan pelaksanaan heapify . Angka pada node menyatakan urutan pelaksanaan heapify . Analisis Pembangunan Heap Secara Efisien Proses heapify melakukan N/2 kali operasi yang masing-masing memiliki kompleksitas waktu O(log N), sehingga kompleksitas akhirnya terkesan O(N log N). Namun pada kasus ini, sebenarnya setiap heapify tidak benar-benar O(log N). Kenyataannya, banyak operasi heapify yang dilakukan pada tingkat bawah, yang relatif lebih cepat dari heapify pada tingkat di atas. Perhitungan secara matematis 15 membuktikan bahwa kompleksitas keseluruhan MAKE H EAP adalah O(N). 10.2.8 Catatan Implementasi Heap Tentu saja, Anda dapat membuat heap dengan urutan yang terbalik, yaitu elemen terkecilnya di atas. Dengan demikian, operasi yang didukung adalah mencari atau menghapus elemen terkecil. Biasanya heap dengan sifat ini disebut dengan min-heap, sementara heap dengan elemen terbesar di atas disebut dengan max-heap. Agar lebih rapi, Anda dapat menggunakan struct (C) atau class (C++) pada implementasi heap . Bagi pengguna C++, struktur data priority_queue dari header queue merupakan struktur data heap . Pada ilmu komputer, heap dapat digunakan sebagai priority queue, yaitu antrean yang terurut menurut suatu kriteria. Sifat heap juga dapat digunakan untuk optimisasi suatu algoritma. Contoh paling nyatanya adalah untuk mempercepat algoritma Dijkstra, yang akan kita pelajari pada Bab 11. Berbagai solusi persoalan greedy juga dapat diimplementasikan secara efisien dengan heap . Heap dapat pula digunakan untuk pengurutan yang efisien, dan akan dibahas pada bagian berikutnya. Dengan mempelajari heap , Anda memperdalam pemahaman tentang bagaimana penggunaan struktur data yang tepat dapat membantu menyelesaikan persoalan tertentu secara efisien. 10.2.9 Heapsort Apakah Anda masih ingat dengan selection sort ? Berikut adalah ringkasan langkah-langkahnya: 1. Pilih elemen terkecil, lalu tempatkan di paling awal data. 118