ANALISIS WAKTU ALGORITMA QUICKSORT DAN MERGESORT

dokumen-dokumen yang mirip
ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

STRATEGI DIVIDE AND CONQUER

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

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Algoritma Divide and Conquer (Bagian 2)

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

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

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Analisis Kecepatan Sorting Dengan Notasi Big O

Algoritma Divide and Conquer. (Bagian 2)

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

Algoritma Bubble Sort dan Quick Sort

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

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

Solusi UTS Stima. Alternatif 1 strategi:

BAB 2 LANDASAN TEORI

Kompleksitas Algoritma Dalam Algoritma Pengurutan

BAB 3 ANALISA SISTEM

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

Bab Tujuan. 6.2 Insertion Sort

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

METODE DEVIDE AND CONQUER (DANDC)

BAB II TINJAUAN PUSTAKA

Modul Praktikum 6 Pemograman Berorientasi Objek

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

MAKALAH ALGORITMA DIVIDE AND CONQUER

BAB I PENDAHULUAN Latar Belakang

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

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Outline STRUKTUR DATA. VII. Sorting

Kompleksitas Algoritma

Kompleksitas Algoritma Sorting yang Populer Dipakai

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

BAB VI SORTIR ATAU PENGURUTAN

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

Algoritma Divide and Conquer (Bagian 1)

Decrease and Conquer

Algoritma Sorting (Selection Insertion)

Komparasi Algoritma Quicksort dan Bucket Sort pada Pengurutan Data Integer

ALGORITMA DIVIDE AND CONQUER

Sorting Algorithms. Divide and Conquer

Pengurutan (Sorting) Algoritma Pemrograman

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

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

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

BAB VII ALGORITMA DIVIDE AND CONQUER

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

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

Sorting. Selection Sort. Straight insertion Sort. Merge Sort Paradigma Divide-and-Conquer. Quicksort

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Kompleksitas Algoritma

BAB 2 TINJAUAN PUSTAKA

Aplikasi Strategi Algoritma dalam Pembagian Kelompok Tugas Besar

Analisis Algoritma Bubble Sort

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran

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

Heap Tree dan Kegunaannya dalam Heap Sort

Logika dan Algoritma Yuni Dwi Astuti, ST 2

Kompleksitas Algoritma (1)

Algoritma dan Struktur Data. Searching dan Sorting

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

Teknik Pengurutan Kartu Remi

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

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

Pengertian Algoritma Pengurutan

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

ALGORITMA PENGURUTAN & PENCARIAN

Multithreading untuk Algoritma Divide and Conquer

QUICKSORT: METODE PENGURUTAN ARRAY SATU DIMENSI YANG CEPAT DAN EFISIEN. (Quicksort: Quick and Efficient One-Dimension Array Sorting Method)

Teori Algoritma. Literatur

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

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

Algoritme dan Pemrograman

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

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

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

Algoritma Divide and Conquer

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA SILABUS ALGORITMA PEMROGRAMAN

RESUME ALGORITMA MERGE SORT DAN REKURENS

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

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

ANALISIS ALGORITMA QUICK SORT, MERGE SORT DAN IMPLEMENTASINYA DALAM BAHASA PEMROGRAMAN PYTHON. Disusun Oleh : Nouval Raafi Adly ( )

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

Fakultas Teknologi Informasi

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Transkripsi:

ANALISIS WAKTU ALGORITMA QUICKSORT DAN MERGESORT Oleh : Yahfizham,ST.,M.Cs Abstrak Sistem komputer yang terdiri dari perangkat keras, perangkat lunak perangkat manusia yang saling berinteraksi bekerja sama sehingga mencapai suatu tujuan tertentu. Tujuan yang dimaksud penyelesaian suatu pekerjaan atau persoalan mungkin saja menganalisis suatu peluang. Peran dalam perangkat lunak atau pemograman begitu penting, sehingga perlu memahami konsep dasar. Begitu banyak logika pemograman yang telah diciptakan, untuk kasus yang umum juga khusus. Algoritma Quick sort merge sort merupakan suatu strategi pengurutan (indexing) data, yang termasuk pada metode bagi dua selesaikan (divide-and-conquer). Algoritma dibutuhkan agar suatu permasalahan dapat diselesaikan dengan lebih efektif dengan sedikit sumber daya yang dilibatkan lebih efisien dengan durasi waktu yang dibutuhkan sedikit (cepat). Key word :, divide and conquer, quick sort merge sort. Pendahuluan Sejarah kemunculan sejalan dengan kemunculan teknologi komputer. Analisis menjadi topik bahasan utama dalam disiplin ilmu komputer. Seorang programmer komputer telah lama menggunakan untuk diterapkan pada sistem informasi manajemen yang menjalankan fungsi-fungsi akuntansi perusahaan yang disebut sistem pemrosesan transaksi (transaction information system) atau sistem pemrosesan data secara elektronik (Electronic Data Processing/EDP), yang kemudian berkembang menjadi sistem pendukung pengambilan keputusan (Decision Support System/DSS). Algoritma kumpulan instruksi yang dibuat secara jelas terhadap penyelesaian suatu masalah. Kumpulan instruksi yang dimaksud dibangun dari suatu bahasa pemograman yang dimengerti oleh komputer. Kumpulan instruksi tersebut berupa tahapan-tahapan atau langkahlangkah untuk menyelesaikan suatu pekerjaan atau penyelesaian suatu masalah secara lebih efektif dengan sedikit sumber daya yang dilibatkan lebih efisien dengan durasi waktu yang dibutuhkan sedikit (cepat). Secara bebas, kita menganggap kurang lebih sama dengan suatu prosedur yang sering dikerjakan atau dilakukan sehari-hari. 1

Contohnya memasak beras, langkah-langkahnya sebagai berikut: ambil tempat menanak nasi, masukkan beras secukupnya kedalam tempat tadi, bersihkan masukkan air sesuai takaran, masukkan kedalam magic jar, colokkan ke listrik tekan tombolnya. Contoh lain ketika kita hendak mengendarai sepeda motor, tahapan-tahapan yang kita lakukan memeriksa posisi kendaraan, melihat ban, memeriksa kunci, menghidupkan mesin jalan. French,C.S. (1984) menyatakan sejumlah konsep yang mempunyai relevansi dengan masalah rancangan program yaitu kemampuan komputer, kesulitan ketepatan. Penerapan dari konsep tersebut biasanya digunakan dalam rancangan. Dalam merancang sebuah, Fletcher (1991) memberikan beberapa cara atau metode yaitu kumpulan perintah, ekspresi, tabel instruksi, program komputer, kode semu flow chart, segkan Knuth (1973) menyarankan fundamental yaitu input, proses output. Dalam analisis terdapat bagian-bagian yang dapat dianalisis, yaitu kecepatan waktu, kapasitas biaya kapasitas ruang. Ketiganya menggunakan notasi O (big O). Divide and Conquer metode pemecahan masalah yang bekerja dengan membagi masalah (problem) menjadi beberapa submasalah (sub-problem) yang lebih kecil, kemudian menyelesaikan masing-masing sub-masalah secara independen, akhirnya menggabungkannya. Algoritma quicksort mergesort diaplikasikan dengan cara membagi tabel menjadi bagian kiri bagian kanan, perulangan dilakukan secara rekursif (reccurent). Kemudian menggabungkan hasil pengurutan masing-masing bagian menjadi tabel semula yang sudah terurut. Proses pembagiannya mudah karena hanya memerlukan proses pembagian biasa. Akan tetapi proses penggabungannya menjadi sulit karena unsur-unsur pada tabel kecil belum tentu terurut sehingga pada setiap tahap penggabungan, harus terus dilakukan pembandingan pengurutan kembali. Algoritma pengurutan (sorting algorithm) yang menyimpan suatu list pada suatu urutan tertentu, biasanya membesar atau mengecil, biasanya digunakan untuk mengurutkan angka ataupun huruf. Efisiensi pada pengurutan ini diperlukan untuk mengoptimalkan kecepatan pemrosesan. Semakin efisien suatu, maka pada saat dieksekusi dijalankan akan menghabiskan waktu yang lebih cepat bisa menerima lebih banyak masukan dari user. Terdapat banyak pengurutan yang sudah dibuat seperti selection sort, shell sort, heapsort, bubble sort, insertion sort, radix sort, quicksort, mergesort. Yang menjadi domain pada kesempatan ini mencoba untuk menganalisis kecepatan waktu dari quicksort mergesort, dengan sekali inputan data berupa bilangan bulat (integer) dalam suatu list atau array secara acak (random). Konsep Dasar Algoritma Quicksort Algoritma quicksort pertama kali dibuat oleh C.A.R.Hoare tahun 1960. Pada masalah penyortingan (sorting) data bilangan bulat (integer) secara terindeks pada suatu list atau array dari bilangan yang paling besar sampai ke bilangan yang paling kecil atau sebaliknya. Tidak hanya dapat 2

diterapkan pada pengindeksan bilangan saja, namun juga untuk pengindeksan huruf (abjad) dari A ke Z atau sebaliknya. Algoritma ini sangat baik diterapkan pada kasus pengindeksan kumpulan kata (library sort utility) atau kumpulan bilangan atau kombinasinya. Algoritma ini mengikuti langkah langkah sebagai berikut : 1. Divide Memilah rangkaian data menjadi dua sub-rangkaian A[p q-1] A[q+1 r] dimana setiap unsur A[p q-1] kurang dari atau sama dengan A[q] setiap unsur pada A[q+1 r] lebih besar atau sama dengan unsur pada A[q]. A[q] disebut sebagai unsur pivot. Perhitungan pada unsur q merupakan salah satu bagian dari prosedur pemisahan. 2. Conquer Mengurutkan unsur pada subrangkaian secara rekursif Pada quicksort, langkah kombinasi tidak di lakukan karena telah terjadi pengurutan unsur unsur pada sub-array. Quicksort termasuk pada pendekatan sulit membagi, mudah menggabung (hard split/easy join). Cara pemilihan pivot: 1) Pivot = unsur pertama/unsur terakhir/unsur tengah tabel 2) Pivot dipilih secara acak dari salah satu unsur tabel. Pivot = unsur median tabel Kasus terburuk (worst case) terjadi bila pada setiap partisi pivot selalu terpilih unsur maksimum atau unsur minimumnya. Kasus ini terjadi jika tabel sudah terurut menaik/menurun Kasus rata-rata (average case) terjadi jika pivot dipilih secara acak dari unsur tabel, peluang setiap unsur dipilih menjadi pivot sama. Rata-rata jumlah tingkatan perbandingan diatas semua permutasi urutan masukan dapat diperkirakan dengan teliti dengan pemecahan hubungan perulangan Kompleksitas Waktu Quicksort Kasus terbaik (best case) terjadi bila pivot unsur median sedemikian sehingga kedua tabel berukuran relatif sama setiap kali pempartisian. 3

Konsep Dasar Algoritma Mergesort atau Tavg (n) = O(n Deskripsi dari ini dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut penjelasan langkah kerja dari merge sort. 1. Divide Memilah unsur unsur dari rangkaian data menjadi dua bagian. 2. Conquer Setiap bagian dengan memanggil prosedur mergesort secara rekursif 3. Kombinasi Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan n)= O(n log n) Implementasi Quicksort Penerapan quicksort menggunakan antar muka bahasa pemograman berbasis visual yaitu visual basic 6.0 dengan kumpulan perintah seperti dibawah ini: Public Sub Quicksort(list() As Integer, ByVal min As Long, ByVal max As Long) Dim med_value As Long Dim hi As Long Dim lo As Long Dim i As Long If min >= max Then Exit Sub i = Int((max - min + 1) * Rnd + min) med_value = list(i) list(i) = list(min) lo = min hi = max Do Do While list(hi) >= med_value hi = hi - 1 If hi <= lo Then Exit Do If hi <= lo Then list(lo) = med_value Exit Do list(lo) = list(hi) lo = lo + 1 Do While list(lo) < med_value lo = lo + 1 If lo >= hi Then Exit Do If lo >= hi Then lo = hi list(hi) = med_value Exit Do list(hi) = list(lo) Quicksort list(), min, lo - 1 Quicksort list(), lo + 1, max End Sub Proses rekursi berhenti jika mencapai unsur dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu unsur. Sisa pengurutan satu unsur tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian. Mergesort termasuk pada pendekatan mudah membagi, susah menggabung (easy split/ hard join). Kompleksitas Waktu Mergesort Kasus terbaik (best case) terjadi apabila data sudah terurut, sehingga pada saat kombinasi tidak perlu mengurutkan kembali. 4

Kasus terburuk (worst case) terjadi bila data terkondisi seperti pada gambar berikut. Kasus rata-rata (average case) terjadi jika pivot dipilih secara acak dari elemen tabel. Tavg (n) = O(n n)= O(n log n) Implementasi Mergesort Penerapan mergesort menggunakan antar muka bahasa pemograman berbasis visual yaitu visual basic 6.0 dengan kumpulan perintah seperti dibawah ini: Public Sub Merge(list() As Integer, ByVal bawah As Long, ByVal tengah As Long, ByVal atas As Long) 5 Dim temp_array() As Integer Dim temp As Integer Dim vektora As Long Dim vektorb As Long Dim vektorutama As Long ReDim temp_array(bawah To atas) CopyMemory temp_array(bawah), list(bawah), (atas bawah + 1) * Len(list(bawah)) vektora = bawah vektorb = tengah + 1 vektorutama = bawah Do While (vektora <= tengah) And (vektorb <= atas) If (temp_array(vektora) <= temp_array(vektorb)) Then list(vektorutama) = temp_array(vektora) vektora = vektora + 1 Else list(vektorutama) = temp_array(vektorb) vektorb = vektorb + 1 vektorutama = vektorutama + 1 If vektora <= tengah Then CopyMemory list(vektorutama), temp_array(vektora), (tengah vektora + 1) * Len(list(bawah)) If vektorb <= atas Then CopyMemory list(vektorutama), temp_array(vektorb), (atas vektorb + 1) * Len(list(bawah)) End Sub Public Sub MergeSort(list() As Integer, ByVal first_index As Long, ByVal last_index As Long) Dim tengah As Long If (last_index > first_index) Then tengah = (first_index + last_index) \ 2 MergeSort list, first_index, tengah MergeSort list, tengah + 1, last_index Merge list, first_index, tengah, last_index

End Sub Pembahasan Walaupun tiap pengurutan menawarkan perbedaan metode sudut pang penyelesaian masalah yang berbeda, namun waktu yang dibutuhkan tetap menjadi masalah utama yang harus menjadi pertimbangan untuk menentukan mana yang lebih baik tepat untuk digunakan. Untuk mengetahui kecepatan waktu tiap, maka digunakan perangkat lunak penghitung kecepatan dalam bahasa pemograman visual basic. Hal ini digunakan untuk mendukung analisis kecepatan sorting data. Dengan mengatur perangkat lunak agar banyaknya jumlah n sesuai yang diinput secara acak, sehingga kemunculan data setiap kali program dijalankan tidak sama tidak dapat diprediksi interval data antara 100 10000. Pengujian dilakukan disebuah laptop dengan spesifikasi : platform Windows XP Profesional, processor AMD 2.2 GHz, 1GB DDR2 RAM. Gambar 2. Grafik Hasil Program Dari gambar hasil program diatas bisa kita lihat perbedaan waktu yang cukup jelas di antara tersebut. Pengurutan data dengan metode quicksort lebih cepat jika dibandingkan dengan mergesort. Hal ini dibuktikan dengan keadaan grafik waktu perbandingan quicksort mergesort. Dimana grafik waktu mergesort perubahannya lebih besar jika dibandingkan dengan quicksort. Penutup Pembuatan program komputer tidak terlepas dari, apalagi program yang dibuat sangat kompleks. Program dapat dibuat dengan mengabaikan, akan tetapi program tersebut memiliki akses yang lambat atau bahkan sangat lambat memakai memori yang banyak. Dalam menguji suatu, dibutuhkan beberapa kriteria untuk mengukur efisiensi, kriterianya memeriksa kebenaran dengan cara matematis menyederhanakannya. Dari paparan yang telah dikemukakan diatas, maka dapat dikatakan bahwa quicksort sesuai dengan namanya, lebih cepat jika dibandingkan dengan mergesort, untuk data bilangan bulat (integer) dari interval 100 10000. Gambar 1. Hasil Program 6

Daftar Bacaan Anonim. Ready-to-Run Visual Basic Algorithms, Second Edition. http://www.vbhelper.com/vba.htm,diakses 10 Nopember 2008. [2] Brassard G. and Bratley P., Fundamentals of Algorithmics. Prentice Hall, New Jersey, 1996. [3] Munir, Rinaldi. Algoritma Divide and Conquer. Institut Teknologi Bandung. Bandung 2004. [4] Sedgewick, Robert. Algorithms. Addison Wesley Publishing Company. 1983. [1] 7