KOMPARASI ALGORITMA QUICKSORT DAN BUCKET SORT PENGURUTAN DATA INTEGER MENGGUNAKAN BAHASA C++

dokumen-dokumen yang mirip
Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

Komparasi Algoritma Quicksort dan Bucket Sort pada Pengurutan Data Integer

BAB VI Pengurutan (Sorting)

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Pencarian (Searching)

Penerapan Algoritma Bucket Sort Untuk melakukan Pengurutan n buah Bilangan Mata Kuliah Pemrosesan Paralel

A. TUJUAN PEMBELAJARAN

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

Gambar 13.1 Ilustrasi proses algoritma sorting

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

Pengertian Algoritma Pengurutan

SORTING (BAGIAN II) Proses kelima

Algoritma Bubble Sort dan Quick Sort

Modul Praktikum 6 Pemograman Berorientasi Objek

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

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

STRUKTUR DATA SORTING ARRAY

SORTING (Pengurutan)

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Komparasi Algoritma Quicksort dan Bucket Sort pada Pengurutan Data Integer Dengan Menggunakan Bahasa Pemrograman Java, C++ dan VB.

Analisis Kecepatan Sorting Dengan Notasi Big O

PERTEMUAN 10 METODE DEVIDE AND CONQUER

STRATEGI DIVIDE AND CONQUER

STRUKTUR DATA (3) sorting array. M.Cs

ALGORITMA PENGURUTAN & PENCARIAN

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

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Outline STRUKTUR DATA. VII. Sorting

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

7. SORTING DAN SEARCHING

BAB 2 LANDASAN TEORI

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

BAB 8 SORTING DAN SEARCHING

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

BAB V SORT. Proses penukaran tidak dapat langsung dilakukan dengan cara : nilai[1] = nilai[2]; nilai[2] = nilai[1];

Perbandingan Performa Kombinasi Algoritma Pengurutan Quick-Insertion Sort dan Merge-Insertion Sort

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Sorting Algorithms. Divide and Conquer

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Jurnal Evolusi Volume 5 No evolusi.bsi.ac.id

Modul Praktikum Algoritma dan Struktur Data

JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN ISSN : VOL. 6 NO. 1 Maret 2013

BAB VII ALGORITMA DIVIDE AND CONQUER

Politeknik Elektronika Negeri Surabaya

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

BAB 2 LANDASAN TEORI

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Algoritma dan Struktur Data. Searching dan Sorting

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

BAB I PENDAHULUAN Latar Belakang

Kompleksitas Algoritma Sorting yang Populer Dipakai

Analisis Algoritma Bubble Sort

# TEN Sorting PENDAHULUAN

ANALISIS ALGORITMA INSERTION SORT, MERGE SORT DAN IMPLEMENTASINYA DALAM BAHASA PEMROGRAMAN C++

Bab Tujuan. 6.2 Insertion Sort

A. TUJUAN PEMBELAJARAN

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

BAB II PEMBAHASAN. A. USE CASE 1. Pengertian Use Case

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

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

Sorting Algorithms. Buble Sort

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Fakultas Teknologi Informasi

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

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

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Heap Tree dan Kegunaannya dalam Heap Sort

Algoritme dan Pemrograman

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Sorting Algorithms. Definisi

Modul 8 SORTING (PENGURUTAN)

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

A. TUJUAN PEMBELAJARAN

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 12 & 13

Kontrak Perkuliahan & Introduction

MENYIGI PENGGUNAAN METODE SHELLSORT DALAM PENGURUTAN DATA

METODE DEVIDE AND CONQUER

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

APLIKASI PERENCANA BELANJA DENGAN PENGURUTAN SKALA PRIORITAS BERBASIS ANDROID

BAB 2 LANDASAN TEORI

1. Algoritma Searching

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Pengurutan (Sorting)

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Sort. Outline. Bubble Sort: idea. Bubble Sort. Sorting

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Transkripsi:

Konferensi Nasional Ilmu Sosial & Teknologi (KNiST) Maret 2015, pp. 139~144 KOMPARASI ALGORITMA QUICKSORT DAN BUCKET SORT PENGURUTAN DATA INTEGER MENGGUNAKAN BAHASA C++ Mira Kusmira 1, Yani Sri Mulyani 2, Karsono 3 1 AMIK BSI Tasikmalaya e-mail: mira.mik@bsi.ac.id 2 AMIK BSI Tasikmalaya e-mail: yani.ymn@bsi.ac.id 3 AMIK BSI Tasikmalaya e-mail: karsono.kso@bsi.ac.id Abstrak Pengurutan data atau sorting merupakan salah satu jenis operasi penting dalam pengolaan data. Hampir setiap saat dalam kehidupan sehari-hari sering dijumpai permasalahan permasalahan yang harus diselesaikan dengan melibatkan operasi pengurutan data, Pengurutan data dapat diartikan juga sebagai tekhnik yang lebih jauhnya lagi digunakan sebagai dari proses yang besar. Sehingga pengurutan data seharusnya bukanlah merupakan masalah program yang komplek. Artikel ini memberikan pembaca sebuah perbandingan diantara dua pengurutan algoritma yaitu algoritma quicksort dan algoritma bucketsort, yang merupakan perbandingan yang mendasar dan tidak mendasar, dalam tampilan waktu dan ruang. Bentuk data yang digunakan dalam artikel ini adalah sebuah tipe data interger Pengujian yang dibawa dengan menggunakan dua tipe kondisi data, yang merupakan kondisi kasus yang paling buruk dalam setiap algoritma, dan dua jumlah data, yang menampilkan jumlah maksimal dan minimun dari sebuah data. Keywords: quicksort,bucket sort,pseudocode, bahasa C++, kompleksitas waktu 139 1. Pendahuluan Perkembangan teknologi dunia sangat pesat. Hal ini terbukti dari kecepatan dan kemudahan dalam penerimaan suatu informasi. Informasi terbentuk dari hasil pemrosesan data. Di dalam buku Reference Model for an Open Archival Information System (OAIS), data adalah suatu hal yang dapat diterjemahkan dan direpresentasikan ke dalam bentuk formal agar dapat digunakan untuk komunikasi, interpretasi, atau pengolahan informasi. Seiiring berkembangnya teknologi, perkembangan jumlah data yang dapat kita olah semakin besar sehingga dibutuhkan suatu cara untuk dapat mengolah data secara efisien dan efektif. Pengolahan data erat kaitannya dengan pencarian data, dimana dalam pencarian tersebut terdapat proses memilah-milah data sesuai kebutuhan. Pencarian data yang efektif dan efisien tidak dapat dilepaskan dari faktor keterurutan data. Data yang sudah terurut akan mempermudah dan mempercepat pencarian data. Oleh karena itu, dibutuhkan suatu algoritma yang dapat mengurutkan data secara benar, efektif, dan efisien. Pengurutan data atau sorting merupakan salah satu jenis operasi penting dalam pengolaan data. Hampir setiap saat dalam kehidupan sehari-hari sering dijumpai permasalahan permasalahan yang harus diselesaikan dengan melibatkan operasi pengurutan data. Begitu pentingnya operasi tersebut, sehingga sampai saat ini telah banyak dikembangkan metode-metode pengurutan data dan mungkin akan tetap bermunculan metode-metode baru. Setiap algoritma pengurutan memiliki pendekatan dan metode yang berbeda-beda dalam menjalankan fungsinya. Secara garis besar, algoritma pengurutan dapat dikelompokkan menjadi dua kategori, yaitu algoritma pengurutan berbasis perbandingan (comparison based) dan tidak berbasis perbandingan (non-comparison based). algoritma pengurutan, atau yang biasa dikenal sebagai Sorting Algorithm, telah muncul sejak tahun 1956. Algoritma tersebut Diterima 15 Januari 2015; Revisi 18 Februari 2015; Disetujui 15 Maret 2015

dikenal dengan nama Sorting by Exchange. Seiiring berjalannya waktu, berbagai macam metode dalam algoritma pengurutan terus ditemukan sampai saat ini. beberapa contoh dari algoritma pengurutan yang populer, yakni Bubble Sort, Insertion Sort, Selection Sort, Shell Sort, Merge Sort, Heapsort, Quicksort, dan Bucket Sort. Algoritma pengurutan juga diimplementasikan dalam penggunaan algoritma pencarian yang efektif. Salah satu algoritma pencarian yang mengharuskan untuk menggunakan algoritma pengurutan dalam implementasinya adalah Binary Search. Tipe data yang diurutkan beragam, mulai dari bilangan bulat, bilangan bertipe floating point, karakter, ataupun string. Namun, tidak semua algoritma pengurutan dapat mengurutkan seluruh tipe data. Beberapa algoritma pengurutan hanya dapat digunakan dengan tipe data tertentu. Heineman, Selkow, dan Pollice (2008) menyatakan salah satu contoh algoritma non-comparison based yang hanya cocok digunakan untuk mengurutkan data bilangan saja yaitu algoritma Bucket sort. Algoritma quick sort adalah algoritma pengurutan data menggunakan metode patition exchange sort, diperkenalkan oleh (C.A.R. Hoare pada tahun 1960). Sementara Algoritma Bucket Sort pengurutan yang membagi N data ke dalam berbagai ember, atau bucket, metode yang digunakan yaitu dengan insertion sort. Quick Sort Quick Sort merupakan suatu algoritma pengurutan data yang menggunakan teknik pemecahan data menjadi partisi, sehingga metode ini disebut juga dengan nama partition exchange sort. Untuk memulai irterasi pengurutan,, pertama tama sebuah elemen didpilih dari data, kemudan elemen elemen data akan di urutkan di atur sedemikian rupa. Algoritma quick sort memiliki kompleksitas 0(n log n) dimana pada prakteknya lebih cepat dari algoritma pengurutan lainnya. Namun kemungkinan terburuknya, algoritma quick sortini dapat memiliki kompleksitas 0(n2). Meskipun ini sangat langka terjadi. Quicksort dengan pendekatan rekursif tidak membutuhkan struktur data khusus, seperti stack, karena setiap kelompok akan berjalan secara rekursif. Sedgewick R. dan Wayne K. (2011) menyatakan bahwa terdapat dua bagian pada pendekatan rekursif, yaitu sort dan partisi. Partisi merupakan bagian yang melakukan tugas untuk pengelompokkan data, sedangkan sort adalah bagian yang melakukan proses rekursif. Semakin besar jumlah data, maka kompleksitas ruang suatu algoritma rekursif akan semakin besar. Quicksort menggunakan metode divide and conquer untuk membagi suatu list menjadi dua sub-list. Langkah-langkahnya adalah sebagai berikut. 1. Pilih salah satu elemen, bernama pivot, dari list. 2. Melakukan pengurutan pada list sehingga semua elemen yang memiliki nilai lebih kecil dari pivot diletakkan sebelum pivot, sedangkan semua elemen yang memiliki nilai lebih besar dari pivot diletakkan setelah pivot. Elemen yang memiliki kesamaan nilai dengan pivot dapat diletakkan sebelum ataupun sesudah pivot. Operasi ini dinamakan operasi partisi. 3. Melakukan pengurutan pada sub-list yang lebih kecil dan besar sampai sub-list berukuran 1. Hal ini dapat dilakukan secara rekursif maupun non-rekursif. 4. Menggabungkan list. Berdasarkan hasil pemaparan langkah-langkah sebelumnya. Bucket Sort Bucket sort merupakan salah satu bentuk algoritma divide concuer melalui metode partisi dan berjalan dalam keadan linier time (Wilkinson & Allen, 2005). Secara teoritis proses pengurutan dilakukan dengan membagi dan memecah humpunan array ke dalam beberapa ember virtual secara merata. Adapin ember yang dijadikan partisi n dayta kemudian diurutka secara individual, menggunakan algoritma sorting yang berbeda atau melalui penerapan Bucket Sort secara rekursif. Ember virtual yang merupakn partisi atasa n array dan merupakan proses acak yang mendistribusikan elemen seragam pada interval [0,1], dimana pembagian tersebut dilakukan merata sama besar. Dengan asumsi input dalam n elemen pada array a, untuk masing masing A memenuhi 0 A [i] I, sehingga membutuhkan array bantu B yang merupakan ember sub interval (Wilkinson & Allen,2005). Langkah-langkah pada pemrosesan data dengan algoritma Bucket sort adalah sebagai berikut. 1. Membuat suatu inisial array (ember) kosong sebanyak jumlah array yang diberikan. 140

2. Memasukan setiap objek pada array yang ingin diurutkan ke dalam ember yang sesuai. 3. Melakukan pengurutan pada setiap objek yang ada di tiap ember, dapat dilakukan dengan algoritma lain, seperti Insertion Sort. 2. Metode Penelitian Metode yang digunakan dalam penelitian kali ini adalah dengan menggunakan metode pengurutan data diantaranya : mengunakan Quick Sort dan Bucket Sort. Data tersebut bertipe integer dan diambil secara acak untuk Quick Sort sebanyak 10 Data dan Bucket Sort Sebanyak 5 Data. Metode Quick Sort Sebagai contoh terdapat data 23, 45, 12, 24, 56, 34, 27, 23, 16 maka ilustrasi pengurutannya adalah sebagai berikut: Gambar 1. Ilustrasi Quick Sort Pseudocode untuk Quick Sort adalah sebagai berikut Function Quicksort(array) Var list less, greater If length (array) < 1 Return array // an array of zero or One elements is already sorted Select and remove a pivot value pivot Form array For each x in array If x < pivot then append x to Less else append x to greater Return concatenate(quicksort(less), Pivot, quicksort(greater)) End function 3.2 Metode Bucket Sort Metode bucket sort dengan menggunakan insertion sort. Prinsif dasar insertion adalah secara berulang ulang menyisipkan / memasukkan setiap elemen, kedalam posisinya / tempatnya yang benar. Prinsip kerja insertion sort adalah : 1. pengecekan mulai dari data ke-1 sampai ke-n 2. bandingkan data ke-1 (1=data ke-2s/d data ke-n) 3. bandingkan data jika lebih kecil maka data ke-1 tersebut dengan data sebelumnnya (i-1), jika lebih kecil maka data trsebut dapat disisipkan kedata awal sesuai dengan posisi yang seharusnya. Contoh: insertion sort Data: 22 10 15 3 8 2 Iterasi 1 1 2 3 4 5 6 Langkah 1 : 22 10 15 3 8 2 Langkah 2 : 10 22 15 3 8 2 Langkah 3 : Ulangi langkah 1 dan 2 Iterasi 2 Langkah 1 : 10 22 15 3 8 2 Langkah 2 : 10 15 22 3 8 2 Langkah 3 : Ulangi langkah 1 dan 2 Lakukan iterasi selanjutnya samapai iterasi ke-6 Setiap ada pemindahan, maka elemen yang sudah ada akan di insert sehingga akan bergeser kebelakang. Pseudocode untuk Bucket Sort dengan menggunakan bahasa pemrograman C++ adalah sebagai berikut: Function bucketsort (array A, n) is n < -length [A] bucket new array of n empaty lists for I = 1 to n do insert array [i] into buckets[n*a[i]/ max value)] end for for I =0 to n 1 do sort list buckets[i]with insertion sort,as example end for concatenate list of buckets[0] buckets[n-1] together end function 3. Pembahasan Implementasi ke dalam bahasa pemrograman C++ untuk beberapa metode pengurutan data menggunakan compailer Dev C++ versi 5.11 pada platform Windows 10x64 Pengujian ini bertujuan untuk mengetahui dan membandingkan keceptan eksekusi data antara algoritma Quick Sort dengan menggunakan bahasa pemrograman C++ 141

Metode Quick Sort Tabel 1. Source code Quick Sort Menggunakan Bahasa C++ #include <stdio.h> #include <conio.h> #include <iostream.h> #define MAX 11 #define MaxStack 11 int Data[MAX]; // Prosedur menukar data void Tukar (int *a, int *b) int temp; temp = *a; *a = *b; *b = temp; // Prosedur pengurutan metode Quick Sort void QuickSortNonRekursif() struct tump int Kiri; int Kanan; Tumpukan[MaxStack]; int i, j, L, R, x, ujung = 1; Tumpukan[1].Kiri = 0; Tumpukan[1].Kanan = MAX-1; while (ujung!=0) L = Tumpukan[ujung].Kiri; R = Tumpukan[ujung].Kanan; ujung--; while(r > L) i = L; j = R; x = Data[(L+R)/2]; while(i <= j) ]) while(data[i] < x) i++; while(x < Data[jj--; if(i <= j) Tukar(&Data[i], &Data[j]); i++; j--; if(l < i) ujung++; Tumpukan[ujung].Kiri = i; Tumpukan[ujung].Kanan = R; R = j; main() int i; //Memasukkan data yang belum terurut printf("data SEBELUM TERURUT : \n"); for(i=1; i<max; i++) printf("data ke %d : ", i); scanf ("%d", &Data[i]); QuickSortNonRekursif(); //Data setelah terurut printf("\ndata SETELAH TERURUT"); for(i=1; i<max; i++) printf("\ndata ke %d : %d ", i, Data[i]); getch(); Tabel 2. Hasil Pengujian Metode Quick Sort DATA SEBELUM TERURUT Data ke 1 : 2 Data ke 2 : 3 Data ke 3 : 1 Data ke 4 : 3 Data ke 5 : 4 Data ke 6 : 3 Data ke 7 : 2 Data ke 8 : 4 Data ke 9 : 1 DATA SETELAH TERURUT Data ke 1 : 1 Data ke 2 : 1 Data ke 3 : 2 Data ke 4 : 2 Data ke 5 : 3 Data ke 6 : 3 Data ke 7 : 3 Data ke 8 : 4 Data ke 8 : 7 Data ke 9 : 8. Process exited after 8.669 seconds with return value Press any key to continue 142

Metode Bucket Sort Tabel 4.3 Source Code Bucket Sort Menggunakan Bahasa C++ Tabel 4.4 Hasil Pengujian Bucket Sort DATA SEBELUM TERURUT Enter the size of array : 5 Enter the 5 elements to be sorted : 4 3 5 2 1 The array of elements before sorting : 4 3 5 2 1 The array of elements after sorting : 1 2 3 4. Process exited after 7.828 seconds with return value 0 Press any to continue. 4. Simpulan Metode menggunakan Algoritma Teknikteknik pengurutan data memang cukup beragam, namun demikian tentunya dalam prosesnya ada metode mempunyai kelebihan dan kekurangan sendiri sehingga metode yang telah dibahas sebelumnya diatas masih dapat diterapkan tergantung dari masalah yang sedang dihadapi. Paling tidak dengan pemahaman algoritma secara sederhana tersebut lebih mudah dalam menyelesaikan setiap permasalahan yang menyangkut proses pengurutan data. Berdasarkan logika proses pengurutan data dengan menggunakan algoritma Quick Sort dan Bucket Sort, maka dapat disimpulkan sebagai berikut. 1. Hasil pengujian Algoritma Bucket Sort lebih sesuai digunakan ketika data yang ingin di urutkan berjumlah sedikit. 2. Hasil pengujian Algoritma Quick Sort lebih sesuai untuk digunakan pada data yang berjumlah banyak. 3. Algoritm Bucket Sort membutuhkan tempat atau memory yang lebih besar dibandingkan algoritma Quick Sort yang hanya melakukan perbandingan rekursif 4. Dari hasil Pengujian pengurutan data integer menggunakan pemograman C++ waktu yang diperlukan Quick Sort adalah 8.669 second sedangkan Bucket Sort hanya 7.828 5. Jadi Bucket Sort lebih cepat dibandingkan Quick Sort. Referensi Astrachan owen Bubble Sort : An Archaeological Algorithmmic Analysis. S12GCSE 03 Proceedings of the 34 th SIGCSE technical symposium on Computer science education, 2003; Hal. 1-5 Canaan C Garai M.S, Daya M. Popular Sorting Algorithms. World Applied Programming Journal, 2011; 1(1): 62-71 Drozdek, A. 2001. Data Structures and Algorithms in C++. Brooks/Cole Thomson Learning. California. USA. Heineman George T., Selkow Stanley, Pollice Gary. Algorithms in a Nutshell. O Reilly Media; 2008. Horstmann, C. 2008. C++ for Everyone. Wiley Publishing. San Jose, USA. K. Andri, 2009, Struktur Data dengan C++. Yogyakarta, Penerbit Graha ilmu. Kristanto, A. 2009. Algoritma dan Pemrograman dengan C++. Graha Ilmu. Yogyakarta. Robert Lafore. Data Structures & Algorithms in Java. USA: Sams Publishing; 2003. 143

Rosen, k, h. Discrete Mathematics and Its Applications (7 th ed.). New York: McGRraw-Hill; 2012 Sareen Pankaj. Comparison of Sorting Algorithms (On the Adanced in Computer Science and Software Engineering, 2013; 3 (3): Hal. 522-532 Sedgewick R., Wayne K Algorithms (Fourth Edition). Addison Wesley Professional;2011 144