Heap Tree dan Kegunaannya dalam Heap Sort

dokumen-dokumen yang mirip
Penerapan Pohon Dalam Heap Sort

Laporan makalah ini berjudul Queue (Antrian), laporan ini diharapkan dapat menjadi literatur bagi proses belajar mengajar dalam perkuliahan, terutama

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

HEAP. Heap dan Operasinya. Oleh Andri Heryandi

Algoritma Sorting. Ahmad Kamsyakawuni, S.Si, M.Kom. Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Jember

MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

STRUKTUR DATA SORTING ARRAY

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

ALGORITMA PENGURUTAN & PENCARIAN

Analisis Kecepatan Sorting Dengan Notasi Big O

Pengertian Algoritma Pengurutan

STRUKTUR DATA (3) sorting array. M.Cs

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Kompleksitas Algoritma Sorting yang Populer Dipakai

Algoritma Divide and Conquer (Bagian 1)

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

Tree (Struktur Data) Nisa ul Hafidhoh, MT

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

BAB 2 TINJAUAN PUSTAKA

Buku Ajar Struktur Data

Penyandian (Encoding) dan Penguraian Sandi (Decoding) Menggunakan Huffman Coding

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

ANALISIS KOMPLEKSITAS ALGORITMA UNTUK BERBAGAI MACAM METODE PENCARIAN NILAI (SEARCHING) DAN PENGURUTAN NILAI (SORTING) PADA TABEL

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

APLIKASI SIMULASI PENGURUTAN DATA MENGGUNAKAN ALGORITMA HEAP SORT

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

METODE DEVIDE AND CONQUER

(Binary) Heap. Binary tree yang menyimpan pasangan prioritas (atau prioritas elemen) pada node Property Heap :

ANALISIS ALGORITMA BINARY SEARCH

Penerapan Struktur Data Pohon dalam Implementasi Algoritma Heapsort dan Tinjauan Kompleksitas Waktunya

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Algoritma dan Struktur Data. Searching dan Sorting

Gambar 13.1 Ilustrasi proses algoritma sorting

Kompleksitas Algoritma dari Algoritma Pembentukan pohon Huffman Code Sederhana

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Penerapan BFS dan DFS dalam Garbage Collection

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Kompleksitas Algoritma Dalam Algoritma Pengurutan

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

Aplikasi dan Analisis Algoritma BFS dan DFS dalam Menemukan Solusi pada Kasus Water Jug

Pemrograman Algoritma Dan Struktur Data

Pohon Quad untuk Merepresentasikan Gambar

Pengurutan pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

MAKALAH ALGORITMA DIVIDE AND CONQUER

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

PROPOSAL HIBAH PENGEMBANGAN DAN PENYELENGGARAAN PEMBELAJARAN ONLINE BERBASIS E-LEARNING

Pengkajian Algoritma Pengurutan-Tanpa-Pembandingan Counting Sort dan Radix Sort

Penerapan Pohon Biner dalam Proses Pengamanan Peer to Peer

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Data Structure SORTING. Chapter 11. Dahlia Widhyaestoeti, S.Kom

BAB 8 SORTIR. Pengurutan data (sorting) adalah suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu.

METODE POHON BINER HUFFMAN UNTUK KOMPRESI DATA STRING KARAKTER

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Algoritma dan Struktur Data

BAB 2 LANDASAN TEORI

PENCARIAN KITAB BESERTA PASAL PADA ALKITAB BERDASARKAN KATA DENGAN MENGGUNAKAN STRUKTUR DATA TRIE

Penyelesaian Barisan Rekursif dengan Kompleksitas Logaritmik Menggunakan Pemangkatan Matriks

Penerapan Teknik Binary Search Tree Sebagai Alternatif Penyimpanan Data

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Sorting Algorithms. Divide and Conquer

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

Pengurutan (Sorting) Algoritma Pemrograman

TREE STRUCTURE (Struktur Pohon)

Tree. Perhatikan pula contoh tree di bawah ini : Level. Level 2. Level 3. Level 4. Level 5

Variasi Pohon Pencarian Biner Seimbang

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

PROPOSAL HIBAH PENGEMBANGAN DAN PENYELENGGARAAN PEMBELAJARAN ONLINE BERBASIS E-LEARNING

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Pemodelan Pembagian Kelompok Tugas Besar Strategi Algoritma dengan Masalah Sum of Subset

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

BAB VII ALGORITMA DIVIDE AND CONQUER

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

Pohon dan Pohon Biner

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

Algoritma dan Pemrograman Sorting (Pengurutan) IS1313. Oleh: Eddy Prasetyo N

BAB VI SORTIR ATAU PENGURUTAN

ALGORITMA DIVIDE AND CONQUER

SORTING (Pengurutan)

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

Array (Tabel) bagian 2

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Solusi Terbaik Permainan Rocket Mania Deluxe dengan Pendekatan Algoritma BFS dan Algoritma Greedy

7. SORTING DAN SEARCHING

Transkripsi:

Heap Tree dan Kegunaannya dalam Heap Sort Efendy Chalikdjen 1, Hermanto Ong 2, Satria Putra Sajuthi 3 Laboratorium Ilmu dan Rekayasa Komputasi Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung E-mail : if13068@students.if.itb.ac.id 1, if13069@students.if.itb.ac.id 2, if13099@students.if.itb.ac.id 3 Abstrak Mahasiswa Teknik Informatika dan orang-orang lain yang berkecimpung dalam bidang pemrograman (programming) sering sekali menghadapi masalah pengurutan dalam membangun sebuah program aplikasi. Misalnya saja dalam membangun sebuah aplikasi pengolah data mahasiswa, programmer akan dihadapkan pada masalah pengurutan data mahasiswa berdasarkan atribut tertentu, seperti nama, NIM, nilai, dan sebagainya. Di dalam bidang Teknik Informatika sendiri terdapat banyak sekali jenis-jenis algoritma pengurutan yang dapat digunakan untuk memecahkan masalah pengurutan tersebut, di antaranya adalah bubble sort, merge sort, insertion sort, quick sort, dan selection sort, serta masih banyak lagi jenis algoritma pengurutan lainnya. Oleh karena itu, teknik dan kejelian untuk memilih algoritma pengurutan yang tepat dan sesuai dengan permasalahan pengurutan yang dihadapi sangat diperlukan karena masing-masing algoritma pengurutan tersebut memiliki karakteristik yang berbeda-beda. Penulis memilih untuk mengangkat tema Heap Sort dalam makalah ini sebab heap sort merupakan salah satu algoritma pengurutan yang memiliki kompleksitas waktu asimptotik terbaik. Selain itu juga, heap sort menerapkan teknik yang unik di dalam memecahkan masalah pengurutan, yaitu dengan menggunakan heap tree. Pada makalah ini akan dibahas dan dianalisis heap tree dan kegunaanya dalam heap sort, serta contoh sederhana mengenai cara penerapan algoritma pengurutan heap sort dalam memecahkan suatu masalah pengurutan. Kata kunci: algoritma pengurutan, mangkus, kompleksitas waktu asimptotik, heap sort, heap tree. 1. Pendahuluan Untuk memecahkan masalah pengurutan dalam membangun suatu program aplikasi, dibutuhkan algoritma pengurutan. Di dalam bidang Teknik Informatika terdapat banyak sekali jenis-jenis algoritma pengurutan yang dapat digunakan untuk memecahkan masalah pengurutan. Oleh karena itu, teknik untuk memilih algoritma pengurutan yang tepat, sesuai dengan kebutuhan, dan mangkus sangat diperlukan karena masing-masing algoritma pengurutan memiliki karakteristik yang berbedabeda. Heap sort merupakan salah satu contoh algoritma pengurutan yang memiliki kompleksitas waktu asimptotik terbaik serta menerapkan teknik yang unik/khas di dalam memecahkan masalah pengurutan, yaitu dengan menggunakan heap tree. 2. Heap Tree dan Priority Queue 2.1 Pengertian Heap Tree Secara umum, pengertian dari heap adalah bagian dari memori yang terorganisasi untuk dapat melayani alokasi memori secara dinamis [2]. Suatu heap tree adalah Complete Binary Tree (CBT) di mana harga-harga key pada node-nodenya sedemikian rupa sehingga haga-harga key pada node-node anaknya tidak ada yang lebih besar dari harga key pada node orang tuanya [2]. Pengertian "lebih besar" di atas tidak mutlak, untuk beberapa kasus maka dapat diganti sesuai dengan permasalahan yang dihadapi. 2.2 Implementasi Priority Queue Berdasarkan pengertian di atas maka heap tree bermanfaat untuk mengimplementasikan priority queue. Priority queue merupakan struktur data yang sifatnya sangat mirip dengan antrian, yaitu penghapusan/pengurangan anggota selalu dilakukan pada anggota antrian yang terdepan dan penambahan anggota selalu dilakukan dari belakang antrian berdasarkan prioritas anggota tersebut (anggota yang memiliki prioritas lebih besar selalu berada di depan anggota yang memiliki prioritas lebih rendah). 1

Sebagai suatu priority queue, heap tree memerlukan beberapa metoda sebagai berikut: [2] a. Metoda untuk menginisialisasi suatu CBT (Complete Binary Tree) a secara umum menjadi heap tree. b. Metoda untuk mengambil data paling besar, yaitu root dari heap tree. c. Metoda untuk menambahkan satu key baru ke dalam heap tree. d. Metoda untuk menyusun ulang menjadi heap tree kembali setelah dilakukan metoda b atau c Kriteria yang penting untuk dipenuhi adalah bahwa setiap metoda di atas beroperasi pada tree yang selalu berbentuk CBT (Complete Binary Tree) karena struktur level lebih rendahnya tetap merupakan suatu array[2]. 3. Algoritma Pengurutan(Sorting Algorithm) Heap Sort Contoh penggunaan heap tree dalam priority queue dapat kita lihat pada algoritma pengurutan heap sort. Algoritma pengurutan ini mengurutkan isi suatu array masukan dengan memandang array yang dimasukkan sebagai suatu Complete Binary Tree (CBT). Dengan metoda a maka Complete Binary Tree (CBT) ini dapat dikonversi menjadi suatu heap tree. Setelah Complete Binary Tree (CBT) berubah menjadi suatu priority queue, maka dengan mengambil data root satu demi satu dan disertai dengan metoda d, key-key dari data root yang kita ambil secara berturutan itu akan terurut dengan output hasil pengurutan akan dituliskan dalam array hasil dari arah kanan ke kiri. Untuk optimasi memori, kita dapat menggunakan hanya satu array saja. Yaitu dengan cara memodifikasi metoda b untuk menukar isi root dengan elemen terakhir dalam heap tree. Jika memori tidak menjadi masalah maka dapat tetap menggunakan 2 array yaitu array masukan dan array hasil. Algoritma utama heap sort:[2] heapify() for i 0 to n-1 do remove() reheapify() endfor 3.1 Algoritma Metoda Heapify Ide pertama yang harus kita pikirkan untuk melakukan operasi heapify adalah dari bagian mana kita harus memulai. Bila kita mencoba dari heapify dari root maka akan terjadi operasi runut-naik seperti algoritma bubble sort yang akan menyebabkan kompleksitas waktu yang ada akan berlipat ganda. Setelah diuji, dengan berbagai hasil maka ide yang efisien adalah membentuk heap tree - heap tree mulai dari subtree-subtree yang paling bawah. Jika subtree-subtree suatu node sudah membentuk heap maka tree dari node tersebut mudah dijadikan heap tree dengan mengalirkannya ke bawah. Jadi, algoritma utama heapify adalah melakukan iterasi mulai dari internal node paling kanan-bawah (atau berindeks array paling besar) hingga root, kemudian ke arah kiri dan naik ke level di atasnya, dan seterusnya hingga mencapai root (sebagai array [0..N-1] ). Oleh karena itu, iterasi dilakukan mulai dari j = N/2 dan berkurang satu-satu hingga mencapai j = 0. Pada internal node tersebut, pemeriksaan hanya dilakukan pada node anaknya langsung (tidak pada level-level lain di bawahnya). Di samping itu, pada saat iterasi berada di level yang lebih tinggi, subtreesubtreenya selalu sudah membentuk heap. Jadi, kemungkinan yang paling buruk adalah restrukturisasi hanya akan mengalirkan node tersebut ke arah bawah. Dengan demikian, algoritma metoda heapify ini melakukan sebanyak N/2 kali iterasi, dan pada setiap interasi paling buruk akan melakukan pertukaran sebanyak log 2 (N) kali. 3.2 Algoritma Metoda Remove Algoritma metoda remove hanya menukarkan elemen array pertama dengan elemen array terakhir yang terdapat di dalam heap tree. Secara logika, node yang berada paling kanan-bawah dipindahkan ke root untuk menggantikan node root yang akan diambil. 3.3 Algoritma Metoda Reheapify Algoritma metoda reheapify melakukan restrukturisasi dari atas ke bawah seperti halnya iterasi terakhir dari algoritma metoda heapify. Perbedaan antara metoda heapify dengan metoda reheapify terletak pada iterasi yang dilakukan oleh kedua algoritma tersebut. Algoritma metoda reheapify hanya melakukan iterasi terakhir dari algoritma metoda heapify. Hal ini disebabkan baik subtree kiri maupun subtree kanannya sudah merupakan heap, sehingga tidak perlu dilakukan iterasi yang lengkap seperti algoritma metoda heapify. Dan setelah reheapify maka node yang akan diiterasikan berikutnya akan berkurang satu. 4. Penerapan Algoritma Pengurutan Heap Sort Salah satu contoh penerapan algoritma pengurutan (sorting algorithm) heap sort adalah sebagai berikut: Misalkan terdapat suatu array bilangan bulat yang terdiri dari sepuluh buah anggota dengan nilai data 2

11, 9, 8, 27, 16, 25, 12, 13, 34, dan 43. Kita akan mengurutkan data diatas dengan menggunakan heapsort. Pertama-tama, array di atas dapat dipandang sebagai suatu Complete Binary Tree (CBT) sebagai berikut: Selanjutnya algoritma metoda heapify dilakukan dengan iterasi dari subtree node ke-4, ke-3, dan seterusnya berturut-turut hingga mencapai root (akar). Iterasi dilakukan mulai dari node ke-4 karena N/2 dalam contoh di atas adalah 5. Dan elemen kelima dari array memiliki nilai indeks 4 sebab indeks array biasanya diawali dari 0. Penerapan algoritma metoda heapify terhadap Complete Binary Tree (CBT) pada contoh di atas menghasilkan operasi-operasi pertukaran sebagai berikut: 1. Subtree node ke-4: pertukaran 16 dengan 43 2. Subtree node ke-3: pertukaran 27 dengan 34 3. Subtree node ke-2: pertukaran 8 dengan 25 4. Subtree node ke-1: pertukaran 9 dengan 43, lalu pertukaran 9 dengan 16 5. Subtree node ke-0: pertukaran 11 dengan 43, lalu pertukaran 11 dengan 34, serta akhirnya pertukaran 11 dengan 27 Perubahan-perubahan (pertukaran) tersebut dapat digambarkan sebagai berikut: 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 43 di-remove dan 9 menggantikan posisi yang ditinggalkan oleh 43, maka terjadi reheapify: penukaran 9 dengan 34, 9 dengan 27, dan 9 dengan 13. menjadi dan data yang telah terurut adalah 43. 2. Setelah 34 di-remove dan 11 menggantikan posisi yang ditinggalkan oleh 34, maka terjadi reheapify: penukaran 11 dengan 27, dan 11 dengan 16. 3

menjadi dan data yang telah terurut adalah 34, 43. 3. Setelah 27 di-remove dan 9 menggantikan posisi yang ditinggalkan oleh 27, maka terjadi reheapify: penukaran 9 dengan 25, dan 9 dengan 12. menjadi dan data yang telah terurut adalah 27, 34, 43. 4. Demikian seterusnya dilakukan algoritma metoda remove dan algoritma metoda reheapify hingga tidak ada lagi node yang tersisa. Dan pada akhirnya akan didapatkan hasil data yang telah terurut adalah 8, 9, 11, 12, 13, 16, 25, 27, 34, 43. 5. Representasi Alokasi Dinamis Algoritma Pengurutan Heap Sort Karakteristik dari algoritma pengurutan heap sort adalah bahwa dalam implementasinya heap sort menggunakan heap tree agar dapat diselesaikan secara heapsort. Oleh karena itu, untuk mengimplementasikan algoritma pengurutan heap sort dalam suatu program aplikasi, dibutuhkan adanya alokasi dinamis dengan menggunakan struktur data tree (pohon). Prinsip-prinsip dasar mengenai struktur data tree yang digunakan untuk merealisasikan heap tree adalah sebagai berikut: a. Node-node saling berhubungan dengan menggunakan pointer. Pada struktur data tree ini digunakan minimal dua buah pointer pada setiap node, masing-masing untuk menunjuk ke cabang kiri dan cabang kanan dari tree tersebut. Misalnya dalam bahasa C, struktur data tree dideklarasikan sebagai berikut: class BinaryTreeNode { KeyType Key; InfoType Info; BinaryTreeNode Left, Right; } b. Left dan Right berharga NULL apabila tidak ada lagi cabang pada arah yang bersangkutan. c. Struktur dari binary tree, termasuk hubunganhubungan antar-node, secara eksplisit direpresentasikan oleh Left dan Right. Apabila diperlukan penelusuran naik (backtrack), maka hal tersebut dapat dilakukan dengan penelusuran ulang dari root, penggunaan algoritma-algoritma yang bersifat rekursif, atau penggunaan stack. d. Alternatif lain adalah dengan menambahkan adanya pointer ke parent. Namun hal ini akan mengakibatkan bertambahnya jumlah tahapan pada proses-proses penambahan/penghapusan node. 6. Kesimpulan Algoritma pengurutan heap sort dapat digunakan untuk menyelesaikan masalah-masalah pengurutan dalam membangun suatu program aplikasi dengan mangkus. Algoritma pengurutan heap sort dapat dikategorikan ke dalam algoritma divide and conquer dengan pendekatan pengurutan sulit membagi, mudah menggabung (hard split/easy join) seperti halnya algoritma pengurutan quick sort dan selection sort. Hal ini disebabkan pembagian dilakukan dengan terlebih dahulu menerapkan algoritma metoda heapify sebagai inisialisasi awal untuk mentransformasi suatu Complete Binary Tree (CBT) menjadi heap tree dan pada setiap tahapan diterapkan algoritma metoda reheapify untuk menyusun ulang heap tree. Pembagiannya sendiri dilakukan dengan menerapkan metoda remove yang akan membagi data yang akan diurutkan menjadi dua bagian, masing-masing berukuran sebanyak satu dan sebanyak jumlah node di dalam heap tree dikurangi dengan satu. Sementara itu, proses penggabungannya sangat mudah sebab pada setiap tahapan, data terbesar dari tahap tersebut digabungkan dengan cara disisipkan di depan data terbesar yang diperoleh dari tahap sebelumnya. Keunggulan algoritma pengurutan heap sort terletak pada kompleksitas waktu asimptotiknya yang sangat baik. Untuk melakukan algoritma metoda heapify dilakukan iterasi mulai dari elemen ke-n/2 sampai dengan elemen ke-1, dan pada setiap iterasi paling banyak akan dilakukan operasi pertukaran sebanyak log 2 (N) kali. Oleh karena itu, kompleksitas waktu asimptotik algoritma metoda heapify adalah T(N) = N/2 * log 2 (N) = O (N log 2 (N)). Sementara itu, 4

algoritma metoda remove hanya melakukan pertukaran elemen pertama dengan elemen terakhir dalam heap tree sehingga kompleksitas waktu asimptotiknya adalah T(N) = O (a), a adalah konstanta. Sedangkan algoritma metoda reheapify hanya melakukan restrukturisasi ulang elemen root untuk membentuk heap tree setelah dilakukan algoritma metoda remove. Dengan demikian, kompleksitas waktu asimptotik algoritma metoda reheapify setara dengan T(N) = O (log 2 (N)). Pada algoritma pengurutan (sorting algorithm) heap sort, algoritma metoda heapify dilakukan hanya satu kali sebagai inisialisasi sebelum iterasi, dan algoritma metoda remove dan reheapify dilakukan sebanyak jumlah iterasi, yaitu N. Jadi, kompleksitas waktu asimptotik algoritma pengurutan (sorting algorithm) heap sort adalah T(N) = (N/2 * log 2 (N)) + (N * (a + log 2 (N))) = N/2 log 2 (N) + Na + N log 2 (N) = 3N/2 log 2 (N) + Na = bn log 2 (N) + Na = O (N log 2 (N)). Karakteristik (ciri khas) dari algoritma pengurutan (sorting algorithm) heap sort terletak pada penggunaan heap tree sebagai sarana untuk menyelesaikan / memecahkan permasalahan pengurutan. Hal ini menjadi salah satu faktor yang membuat algoritma pengurutan (sorting algorithm) heap sort menjadi unik (khas), menarik, dan berbeda apabila dibandingkan dengan algoritmaalgoritma pengurutan (sorting algorithm) lainnya. Daftar Pustaka 1. http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets /sortingii/heapsort/heap.html. Diakses tanggal 17 Mei 2005 pukul 16.30 WIB. 2. http://www.cs.ui.ac.id/kuliah/iki10100/1998/ handout/handout15.html. Diakses tanggal 17Mei 2005 pukul 17.00 WIB. 5