Algoritma Bubble Sort dan Quick Sort

dokumen-dokumen yang mirip
STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Sorting (Bubble Sort)

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

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

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

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

Gambar 13.1 Ilustrasi proses algoritma sorting

Analisis Kecepatan Sorting Dengan Notasi Big O

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

PERTEMUAN 10 METODE DEVIDE AND CONQUER

SORTING ALGORITMA. Bubble Sort JANUARY 14, 2016

PERTEMUAN 10 METODE DEVIDE AND CONQUER

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

STRATEGI DIVIDE AND CONQUER

Kompleksitas Algoritma Sorting yang Populer Dipakai

METODE DEVIDE AND CONQUER

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

BAB 2 LANDASAN TEORI

PRATIKUM METODE KOMPUTASI MATEMATIKA TERAPAN

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

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

SORTING (PENGURUTAN DATA)

Modul Praktikum 6 Pemograman Berorientasi Objek

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

ALGORITMA PENGURUTAN & PENCARIAN

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

STRUKTUR DATA SORTING ARRAY

Pengurutan (Sorting) Algoritma Pemrograman

Pengertian Algoritma Pengurutan

Modul Praktikum Algoritma dan Struktur Data

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

Outline STRUKTUR DATA. VII. Sorting

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Analisis Algoritma Bubble Sort

BAB VI SORTIR ATAU PENGURUTAN

A. TUJUAN PEMBELAJARAN

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

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

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

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

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

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

SORTING. Brigida Arie Minartiningtyas, M.Kom

PENGURUTAN (SORTING) 1. Overview

SORTING (Pengurutan)

Sorting Algorithms. Buble Sort

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

Modul 8 SORTING (PENGURUTAN)

A. TUJUAN PEMBELAJARAN

Solusi UTS Stima. Alternatif 1 strategi:

Bab Tujuan. 6.2 Insertion Sort

BAB 2 SORTING (PENGURUTAN)

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

BAB 8 SORTING DAN SEARCHING

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

BAB VI Pengurutan (Sorting)

Politeknik Elektronika Negeri Surabaya

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

Alpro & Strukdat 1 C++ (Sorting) Dwiny Meidelfi, M.Cs

7. SORTING DAN SEARCHING

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

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

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

Kompleksitas Algoritma Dalam Algoritma Pengurutan

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

STRUKTUR DATA (3) sorting array. M.Cs

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

Materi 4: SORTING (PENGURUTAN) Dosen:

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

SEARCHING & SORTING. Pendahuluan

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

BAB I PENDAHULUAN.

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

# TEN Sorting PENDAHULUAN

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

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

Algoritme dan Pemrograman

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

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

Algoritma Divide and Conquer (Bagian 2)

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

Sorting Algorithms. Definisi

Powered by icomit.wordpress.com

Algoritma Pemrograman & Struktur Data

Pengurutan (Sorting)

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

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

BAB VII ALGORITMA DIVIDE AND CONQUER

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

MODUL IV PENCARIAN DAN PENGURUTAN

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

Algoritma Divide and Conquer. (Bagian 2)

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

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

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

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

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

Transkripsi:

Algoritma Bubble Sort dan Quick Sort Pengertian/Konsep Buble Sort Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung. Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat. Kelebihan Bubble Sort Metode Buble Sort merupakan metode yang paling simpel Metode Buble Sort mudah dipahami algoritmanya Kelemahan Bubble Sort Meskipun simpel metode Bubble sort merupakan metode pengurutanyang paling tidak efisien. Kelemahan buble sort adalah pada saat mengurutkan data yang sangat besar akan mengalami kelambatan luar biasa, atau dengan kata lain kinerja memburuk cukup signifikan ketika data yang diolah jika data cukup banyak. Kelemahan lain adalah jumlah pengulangan akan tetap sama jumlahnya walaupun data sesungguhnya sudah cukup terurut. Hal ini disebabkan setiap data dibandingkan dengan setiap data yang lain untuk menentukan posisinya. Algoritma Bubble Sort 1. Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak

sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z). 2. Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 ; n-1 dgn n. 3. Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst. 4. Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi. Contoh Kasus Bubble Sort Misalkan kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini (ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang terjadi: Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran) Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran) Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran) Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) -> proses selesai Analisis Algoritma Bubble Sort Tujuan dari analisis algoritma adalah untuk mengetahui efisiensi dari algoritma. Dalam hal ini dilakukan pembandingan antara dua atau lebih algoritma pengurutan.tahap analisis adalah melakukan pengecekan program untuk memastikan bahwa program telah benar secara logika maupun sintak (tahap tracing atau debugging). Tahap selanjutnya yaitu menjalankan program untuk mengetahui running time atau waktu komputasi dalam hal ini termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil. Salah satu cara untuk menganalisa kecepatan algoritma sorting saat running time adalah dengan menggunakan notasi Big O. Algoritma sorting mempunyai kompleksitas waktu terbaik, terburuk, dan rata-rata. Dengan notasi Big O, kita dapat mengoptimalkan penggunaan algoritma sorting. Sebagai contoh, untuk kasus dimana jumlah masukan untuk suatu pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick sort, merge sort, atau heap sortkarena kompleksitas waktu untuk kasuk terburuk adalah O(n log n). Hal ini tentu akan sangatberbeda jika kita menggunakan algoritma sorting insertion sort atau bubble sort dimana waktu yang dibutuhkan untuk melakukan pencarian akan sangat lama. Hal ini disebabkan kompleksitas waktu terburuk untuk algoritma sorting tersebut dengan jumlah masukan yang banyak adalah O(n2). Dari grafik dibawah dapat diketahui buble sort adalah metode yang paling lambat dari yang lambat-lambat..

Grafik Metode Pengurutan berode O(n2) Algoritma Bubble Sort untuk Pengurutan (Sorting) Pengurutan merupakan salah satu proses dasar yang sering dibahas dalam algoritma dan struktur data. Dan salah satu algoritma klasik dan paling sederhana dalam hal pengurutan (sorting) adalah algoritma Bubble Sort. Terlepas dari beberapa kekurangan yang membuat algoritma ini tidak banyak digunakan dalam proses pengurutan di aplikasi, namun tidak bisa dipungkiri, algoritma ini boleh dikatakan sebagai pionir algoritma sorting. Di dalam matakuliah Algoritma dan Struktur Data di berbagai perguruan tinggi juga bisa dipastikan memasukkan konsep pengurutan menggunakan algoritma Bubble sebagai salah satu pokok bahasan. Tentunya disertai contoh program sederhana yang menerapkan pengurutan menggunakan algoritma bubble sort. Contoh program akan disajikan dalam Bahasa C dan PHP. Algoritma bubble sort dalam proses pengurutan data secara sederhana bisa diibaratkan seperti halnya gelembung udara (bubble). Algoritma ini akan menggeser nilai yang terkecil atau terbesar (sesuai dengan jenis pengurutan, ascending atau descending) ke posisi ujung dari daftar. Demikian seterusnya hingga semua daftar dalam keadaan terurut. Proses dasar yang terjadi dalam algoritma ini adalah proses pertukaran nilai (swapping). Berikut ini algoritma Bubble Sort dikutip dari Wikipedia: procedure bubblesort( A : list of sortable items ) defined as: do swapped := false for each i in 0 to length(a) - 2 inclusive do: if A[i] > A[i+1] then swap( A[i], A[i+1] ) swapped := true end if end for while swapped end procedure

Contoh penerapan Algoritma Bubble Sort dalam Bahasa C++ #include "stdio.h" #include "conio.h" #define n 7 void main() int A[n] = 15,10,7,22,17,5,12; int X, I, K; printf("sebelum di-sort\n"); for (I=0; I <= n-1; I++) printf("%3i", A[I]); printf("\n"); K=0; while(k<=n-2) I=0; while(i<=n-2 - K) if (A[I] > A[I+1]) X = A[I]; A[I] = A[I+1]; A[I+1] = X; I++; K++; printf("sesudah di-sort\n"); for (I=0; I<= n-1; I++) printf("%3d", A[I]); Algoritma Quick Sort Pengertian Quick Sort Algoritma sortir yang efisien yang ditulis oleh C.A.R. Hoare pada 1962. Dasar strateginya adalah memecah dan menguasai. Quicksort dimulai dengan menscan daftar yang disortir untuk nilai median. Nilai ini, yang disebut tumpuan (pivot), kemudian dipindahkan ke satu sisi pada daftar dan butir-butir yang nilainya lebih besar dari tumpuan di pindahkan ke sisi lain. Divide

Memilah rangkaian data menjadi dua sub-rangkaian A[p q-1] dan A[q+1 r] dimana setiap elemen A[p q-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1 r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan. Conquer Mengurutkan elemen pada sub-rangkaian secara rekursif Pada algoritma quick sort, langkah kombinasi tidak di lakukan karena telah terjadi pengurutan elemen elemen pada sub array. Pseudocode Quick Sort Contoh Quick Sort

Analisis Algoritma QuickSort Setiap elemen yang akan disort selalu diperlakukan secara sama di sini, diambil salah satu elemen, dibagi menjadi 3 list, lalu ketiga list tersebut disort dan digabung kembali. Contoh kode di atas menggunakan 3 buah list, yaitu yang lebih besar, sama dan lebih kecil nilainya dari pivot. Untuk membuat lebih efisien, bisa digunakan 2 buah list dengan mengeliminasi yang nilainya sama (bisa digabung ke salah satu dari 2 list yang lain). Kasus terburuk dari algoritma ini adalah saat dibagi menjadi 2 list, satu list hanya terdiri dari 1 elemen dan yang lain terdiri dari n-2 elemen. Untuk kasus terburuk dan kasus rata-

rata, algoritma ini memiliki kompleksitas sebesar O(n log n). Jumlah rata-rata perbandingan untuk quick sort berdasarkan permutasinya dengan asumsi bahwa nilai pivot diambil secara random adalah : Lalu bagaimana cara menentukan pivot sendiri? Kasus terbaik yang diharapkan diilustrasikan sebagai berikut: Bagi sebuah list menjadi 4 buah. Lalu pilih 2 buah list sedemikian rupa sehingga setiap elemennya lebih besar dari 25 % elemen terkecil dan lebih kecil dari 25% elemen terbesar. Bila nilai pivot yang dipilih secara konstan terambil dari nilai ini maka hanya diperlukan pembagian list sebanyak 2log2n kali.biladibandingkan dengan merge sort, quick sort memiliki keuntungan di kompleksitas waktu sebesar Θ(log n), dibanding dengan merge sort sebesar Θ(n). namun quick sort tidak mampu membandingkan linked list sebaik merge sort, karena ada kemungkinan pemilihan pivot yang buruk. Selain itu pada linked list merge sort memerlukan ruang yang lebih sedikit. Berdasarkan analisis tersebut quick sort termasuk algoritma sorting yang cukup baik, namun kita pun harus bisa memilih nilai pivot yang baik agar penggunaannya bisa optmal. Implementasi Quic Sort Menggunakan C/C++ Partition(A, p, r) x = A[p]; //pivot=elemen posisi pertama i = p ; //inisialisasi j = r ; repeat while(a[j] > x) j--; while(a[i] < x) i++; if (i < j) Swap(A, i, j); j--; i++ else return j; 17 until i >= j Referensi: http://www.kuliahpraktis.com http://achmatim.net/2010/04/19/algoritma-bubble-sort-untuk-pengurutan-sorting/ http://fairuzelsaid.wordpress.com/category/bahan-ajar-modul-ti/struktur-data/