Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
HEAP SORT
Disusun Oleh :
1.
2.
3.
4.
5.
Dana Ananda N.
Hanif Aulia
Hartini Indriani
Rizki Afriani
Ade Widyatama Dian B.
1515015003
1515015012
1515015025
1515015033
1515015042
DAFTAR ISI
1
KATA PENGANTAR.....................................................................................................
DAFTAR ISI...................................................................................................................
ii
BAB I. PENDAHULUAN
1.1 Latar Belakang.............................................................................................
11
12
3.2 Saran.............................................................................................................
12
DAFTAR PUSTAKA......................................................................................................
iii
BAB I
PENDAHULUAN
1.1 Latar Belakang
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. Pengurutan data (data sorting) merupakan bagian dari pengolahan
data informasi. Dari data-data yang telah didapat, ada kalanya data tersebut harus
diurutkan terlebih dahulu berdasarkan aturan yang lebih dulu ditentukan. Berdasarkan
nilai maupun alphabet misalnya. Metode-metode pengurutan data pun ada berbagai jenis.
Mulai dari binary sort, insertion sort, merge sort, heap sort dll. Penggunaan metode mana
yang akan dipakai nantinya tergantung dari jenis maupun kuantitas data yang diolah.
Heap sort, algoritma pengurutan, merupakan salah satu metode pengurutan yang sering
digunakan. Melalui jurnal ini akan dibahas teknik pencarian ini beserta kelebihan dan
kekurangannya. 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.
BAB II
1
PEMBAHASAN
2.1
dengan cara menyerupai binary tree, yaitu dengan cara memvisualisasikan sebuah
array menjadi sebuah binary tree yang nantinya pada binary tree tersebut nilai
pada masing-masing index array akan diurutkan. Pada heap sort terdapat 3 bagian
yaitu Node, Edge, dan leaf dimana node itu adalah setiap index yang berada pada
array, edge adalah garis yang menghubungkan tiap node dan leaf adalah setiap
node yang tidak memiliki child node (node turunan). Selain itu juga ada yang
bernama root yaitu node awal pada sebuah heap. Selain itu juga ada yang bernama
root yaitu node awal pada sebuah heap, berikut adalah ilustrasi dari bagian yang
dimiliki oleh heap :
pertama sebuah heap tree adalah index pertama di array yaitu index 0 akan
tetapi pada heap tree node awal berada di posisi 1 berbeda dengan array yang
memiliki index awal yaitu index 0. Setelah node root telah ditemukan maka
sekarang tinggal mencari child node dari node root dan child node terbagi
menjadi 2 yaitu left child dan right child dan untuk mencari left child, right
child, dan parent digunakan rumus sebagai berikut :
NB : Untuk i adalah posisi node yang ingin dicari left/right childnya atau parent
nodenya dan untuk lambing ( ) adalah floor yaitu pembulatan kebawah missal
3 / 2 = 1,5 dibulatkan kebawah menjadi 1.
Heapify
#included "stdio.h"
B
#include "conio.h"
C
B
A
A
2. tmp;
Masukkan data setiap elemen
char
3. Buat heap tree
tmp=arr[i];
4. Tukarkan elemen ke-1 pada Heap Tree dengan elemen tersebut
while((i>1)&&(arr[i/2]<tmp))
6. Hapus jumlah data ( jumlah data -1)
{
arr[i]=arr[i/2];
i=i/2;
}
arr[i]=tmp;
}
void heapsort(char *arr, int i, int size)
2.4Source Code
{
int tmp,j;
tmp=arr[i];
j=i*2;
while(j<=size)
{
if((j<size)&&(arr[j]<arr[j+1]))
j++;
if(arr[j]<arr[j/2])
break;
arr[j/2]=arr[j];
j=j*2;}
arr[j/2]=tmp;
}
main()
{
int i,j,size,tmp,k;
char arr[20];
printf("\n\t------- Heap sorting method -------\n\n");
printf("Enter the number of elements to sort : ");
scanf("%d",&size); fflush(stdin);
for(i=1; i<=size; i++)
{
printf("Enter %d element : ",i);
scanf("%c",&arr[i]);fflush(stdin);
manage(arr,i);
}
j=size;
for(i=1; i<=j; i++)
{
tmp=arr[1];
arr[1]=arr[size];
arr[size]=tmp;
size--;
heapsort(arr,1,size);
}
10
BAB III
KESIMPULAN DAN SARAN
3.1Kesimpulan
Algoritma pengurutan heap sort dapat digunakan untuk menyelesaikan masalahmasalah pengurutan dalam membangun suatu program aplikasi dengan mangkus.
Keunggulan algoritma pengurutan heap sort terletak pada kompleksitas waktu
asimptotiknya yang sangat baik. Meskipun lebih lambat dari algoritma pengurutan data
yang lain, algoritma heap sort memiliki kelebihan ketika menangani data dalam skala
yang besar/massive. Karena algoritma ini memiliki kelebihan tidak menggunakan banyak
11
tabel, tetapi hanya satu tabel yang dipakai untuk menyimpan hasil dari pengurutan
tersebut.
3.2Saran
Kami mengharapkan agar kita semua mampu memahami pengurutan data
menggunakan metode Heap Sort dan tanpa merasa bingung mengenai bagaimana cara
atau langkah awal pengurutannya. Serta penulis mengharapkan semoga makalah ini
menjadi pedoman atau bahkan menambah wawasan dan pengetahuan mahasiswa maupun
pembaca pada umumnya.
DAFTAR PUSTAKA
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/heapSort/heap.html.
Diakses tanggal 2 Maret 2016 pukul 16.30 WITA
http://www.cs.ui.ac.id/kuliah/IKI10100/1998/handout/handout15.html.
Diakses tanggal 2 Maret 2016 pukul 17.00 WITA
http://nurfitrianti-23.blogspot.co.id/2012/08/ascending-dan-descending.html
Diakses tanggal 2 Maret 2016 pukul 19.00 WITA
http://artofartikel.blogspot.co.id/2012/06/heap-sort.html
Diakses tanggal 5 Maret 2016 pukul 09.30 WITA
12