• Tidak ada hasil yang ditemukan

MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :

N/A
N/A
Protected

Academic year: 2021

Membagikan "MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :"

Copied!
14
0
0

Teks penuh

(1)

MAKALAH STRUKTUR DATA

HEAP SORT

Disusun Oleh : 1. Dana Ananda N. 1515015003 2. Hanif Aulia 1515015012 3. Hartini Indriani 1515015025 4. Rizki Afriani 1515015033

5. Ade Widyatama Dian B. 1515015042

JURUSAN TEKNIK INFORMATIKA

Up. FAKULTAS TEKNOLOGI INFORMASI DAN KOMUNIKASI

UNIVERSITAS MULAWARMAN

2016

DAFTAR ISI

(2)

KATA PENGANTAR... i DAFTAR ISI... ii BAB I. PENDAHULUAN 1.1 Latar Belakang... 1 1.2 Rumusan Masalah... 1 1.3 Tujuan Penulisan... 1

BAB II. PEMBAHASAN 2.1 Definisi Heap Sort... 2

2.2 Ilustrasi Heap Sort... 3

2.3 Algoritma Heap Sort... 5

2.4 Source Code... 6

2.5 Screen Capture Program... 11

BAB III. PENUTUP 3.1 Kesimpulan... 12

3.2 Saran... 12

DAFTAR PUSTAKA... iii

(3)

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.

1.2 Rumusan Masalah

Dari latar belakang diatas, maka terdapat rumusan masalah sebagai berikut : 1. Apa yang di maksud dengan heap sort ?

2. Bagaimana ilustrasi dari metode pengurutan Heap Sort ?

3. Bagaimana implementasi dalam program menggunakan Heap Sort?

1.3 Tujuan Masalah

Adapun tujuan makalah sebagai berikut : 1. Menjelaskan pengertian dari heap sort.

2. Mendeskripsikan ilustrasi dari metode pengurutan Heap sort.

3. Menjelaskan implementasi dalam program menggunakan Heap Sort.

BAB II

(4)

PEMBAHASAN

2.1 Definisi Heap Sort

Heap sort adalah sebuah metode sorting (pengurutan) angka pada sebuah array 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 :

Heap tree terbagi menjadi 2 jenis yaitu Max-Heap dan Min-Heap, dimana max-heap adalah kondisi heap tree yang memiliki nilai tertinggi berada di node root dan setiap child node memiliki nilai yang lebih kecil dari nilai yang dimiliki parent nodenya. Sedangkan pada min-heap adalah kondisi kebalikan dengan max-heap, pada min-heap nilai terkecil berada di node root dan setiap child node memiliki nilai yang lebih besar dari nilai yang dimiliki parent nodenya. Pada metode heap sort jenis heap tree yang digunakan adalah Max-Heap.

Dan untuk memvisualisasikan sebuah array menjadi sebuah heap tree adalah dengan cara mencari node root terlebih dahulu yaitu node pertama node

(5)

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 :

· Left Child: 2i (Contoh : Left child dari 1 adalah 2 x 1 = 2)

· Right Child : 2i + 1 (Contoh : Right Child dari 1 adalah (2 x 1) + 1 =

· Parent : └ i/2 ┘ (Contoh : Parent dari 3 adalah 3 / 2 = 1 )

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.

2.2Ilustrasi Heap Sort

Contoh : Kita memiliki sebuah aray A = A B C D dan diproses menggunakan heap sort menggunakan metode descending. Discending adalah proses mengurutkan dari yang terbesar ke yang terkecil.

Prosedur BUILD-MAX-HEAP dimulai dari Array [A.length/2] yang merupakan node dengan indeks terbesar yang memiliki anak, sampai berakhir pada node pertama A[1]. Fungsinya untuk memastikan bahwa semua node memiliki anak yang nilainya tidak lebih besar dari node tersebut. Iterasi dilakukan dari node terbesar [A.length/2] ke node terkecil A[1] untuk memastikan bahwa semua subtree dari anak sudah merupakan max-heap.

3

(6)

Algoritma Heap Sort dimulai dengan prosedur BUILD-MAX-HEAP untuk membangun max-heap pada array yang telah dimasukkan A[1 … n] dimana n=A.length. Elemen terbesar array disimpan di akar A[1], dimana A[1] ditetapkan sebagai posisi final, sehingga dapat ditukar dengan A[n]. Apabila node n dari heap dihilangkan dan A.heap-size akan semakin berkurang. Anak dari akar memenuhi ketentuan max-heap. Namn, elemen akar yang baru mungkin tidak memenuhi syarat max-heap. Untuk itu, diperlukan pemenuhan sifat max-heap yang disebut MAX-HEAPIFY(A,1) dimana menghasilkan sebuah max-heap A[1 . . n-1]. Algoritma heap sort mengulangi proses untuk max heap n-1 turun hingga heap-size 2.

Operasi heap sort setelah baris 1 untuk mencari nilai max-heap

4

Heapify

(7)

2.3Algoritma Heap Sort

Langkah :

1. Masukkan jumlah data

2. Masukkan data setiap elemen 3. Buat heap tree

4. Tukarkan elemen ke-1 pada Heap Tree dengan elemen tersebut 5. Simpan elemen terakhir

6. Hapus jumlah data ( jumlah data -1) 7. Ulangi sampai semua tersimpan 8. Tampilkan data secara descanding

2.4Source Code

5 #include "stdio.h"

#include "conio.h" void manage(int *, int); void heapsort(int *, int, int); void manage(char *arr, int i) { char tmp; tmp=arr[i]; while((i>1)&&(arr[i/2]<tmp)) { arr[i]=arr[i/2]; i=i/2; } arr[i]=tmp; }

void heapsort(char *arr, int i, int size) { 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; d D B C C B A A

(8)

6 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); }

(9)

7 printf("\n\t--- Heap sorted elements ---\n\n");

size=j;

for(i=size; i>=1; i--) printf("%c ",arr[i]); getch();

(10)

2.5Screen Capture Program

(11)
(12)
(13)

BAB III

KESIMPULAN DAN SARAN

3.1Kesimpulan

Algoritma pengurutan heap sort dapat digunakan untuk menyelesaikan masalah-masalah 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

(14)

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

Referensi

Dokumen terkait