Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

dokumen-dokumen yang mirip
Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Algoritma Bubble Sort dan Quick Sort

Outline STRUKTUR DATA. VII. Sorting

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

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

Sorting Algorithms. Divide and Conquer

Analisis Kecepatan Sorting Dengan Notasi Big O

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

STRATEGI DIVIDE AND CONQUER

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

BAB I PENDAHULUAN Latar Belakang

Sorting Algorithms. Definisi

Bubble Sort dan Shell-Sort. Yuliana Setiowati

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

SORTING (BAGIAN II) Proses kelima

Algoritma dan Struktur Data

Algoritma Divide and Conquer (Bagian 2)

METODE DEVIDE AND CONQUER (DANDC)

Sorting Algorithms. Buble Sort

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Solusi UTS Stima. Alternatif 1 strategi:

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Algoritma Divide and Conquer. (Bagian 2)

Algoritma Sorting (Selection Insertion)

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

BAB 2 LANDASAN TEORI

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

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

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

Decrease and Conquer

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

Bab Tujuan. 6.2 Insertion Sort

Gambar 13.1 Ilustrasi proses algoritma sorting

Kompleksitas Algoritma Dalam Algoritma Pengurutan

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

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

Algoritma Divide and Conquer

Kompleksitas Algoritma Sorting yang Populer Dipakai

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

STRUKTUR DATA SORTING ARRAY

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

BAB 2 LANDASAN TEORI

STRUKTUR DATA (3) sorting array. M.Cs

PERTEMUAN 10 METODE DEVIDE AND CONQUER

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

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

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

SORTING. Brigida Arie Minartiningtyas, M.Kom

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

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

BAB VI SORTIR ATAU PENGURUTAN

ALGORITMA PENGURUTAN & PENCARIAN

Pengertian Algoritma Pengurutan

BAB VII ALGORITMA DIVIDE AND CONQUER

Analisis Algoritma Bubble Sort

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

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

PERTEMUAN 10 METODE DEVIDE AND CONQUER

Politeknik Elektronika Negeri Surabaya

Algoritma dan Struktur Data

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Design and Analysis Algorithm

BAB 3 ANALISA SISTEM

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

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

BAB VI Pengurutan (Sorting)

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

Algoritma dan Struktur Data. Searching dan Sorting

PERTEMUAN 15 REVEW/QUIZ

SEARCHING & SORTING. Pendahuluan

Modul Praktikum 6 Pemograman Berorientasi Objek

BAB 2 TINJAUAN PUSTAKA

BAB 8 SORTING DAN SEARCHING

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

METODE DEVIDE AND CONQUER

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

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

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

Simple Sorting Techniques

7. SORTING DAN SEARCHING

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

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

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

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

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

SORTING (PENGURUTAN DATA)

SORTING (Pengurutan)

PENGURUTAN DATA 2.1 Definisi Pengurutan 2.2 Metode-metode Pengurutan

BAB II TINJAUAN PUSTAKA

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

PRAKTIKUM 9 PROSEDUR BERSARANG

Multithreading untuk Algoritma Divide and Conquer

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

BAB 2 LANDASAN TEORI

2. Definisi Masalah Masalah yang akan dibahas dalam paper ini adalah mengetahui Comparison based

MODUL IV PENCARIAN DAN PENGURUTAN

Komparasi Algoritma Quicksort dan Bucket Sort pada Pengurutan Data Integer

Transkripsi:

1. Insertion 2. Selection 3. Bubble 4. Shell 5. Quick 6. Merge Sorting Algorithms Sorting algorithms Metode Insertion, selection dan bubble sort memiliki worst-case performance yang bernilai quadratik Apakah algoritma berbasis comparison yang tercepat? O(nlogn) Mergesort dan Quicksort 1

Idea of Quicksort Ambil sebuah pivot. Bagi menjadi 2 : bagian yang kurang dari dan bagian yang lebih dari pivot Urutkan masing-masing bagian secara rekursif Idea of Quicksort 1. Select: pick an element 2. Divide: rearrange elements so that x goes to its final position E 3. Recur and Conquer: recursively sort 2

Quicksort Algorithm Misal diberikan sebuah array A memiliki n elemen (integer) p = 0; r = n-1 Array A[p.. r] dipartisi menjadi dua non-empty subarray : A[p..q] and A[q+1..r] Seluruh elemen dalam array A[p..q] lebih kecil dari seluruh elemen dalam array A[q+1..r] Seluruh sub array diurutkan secara rekursif dengan cara memanggil fungsi quicksort() Quicksort Code Quicksort(A, p, r) { if (p < r) { q = Partition(A, p, r); Quicksort(A, p, q); Quicksort(A, q+1, r); } } 3

Partition Terlihat bahwa, seluruh aksi terjadi dalam fungsi partition() Rearranges subarray secara in place Hasil akhir: Dua subarray Seluruh elemen pada subarray pertama seluruh elemen pada subarray kedua Return value berupa index dari elemen pivot yang memisahkan kedua subarray tsb How do you suppose we implement this? Partition In Words Partition(A, p, r): Pilih sebuah elemen yang bertindak sebagai pivot (which?) Pecah array menjadi dua bagian, A[p..i] and A[j..r] Seluruh element dalam A[p..i] <= pivot Seluruh element dalam A[j..r] >= pivot (HOW?) Increment i until A[i] >= pivot Decrement j until A[j] <= pivot Jika i < j, maka Swap A[i] and A[j] Jika tidak, return j Repeat until i >= j 4

Partition Code 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; until i >= j 12 35 9 11 3 17 23 15 31 20 QuickSort(0,9) X = PIVOT merupakan indeks ke 0 PIVOT = 12 terdapat variabel i dan j, i=0, j=9 variabel i untuk mencari bilangan yang lebih dari atau sama dengan PIVOT. Cara kerjanya : selama Data[i] < PIVOT maka nilai i ditambah. variabel j untuk mencari bilangan yang lebih kecil dari atau sama dengan PIVOT. Cara kerjanya : selama Data[j] > PIVOT maka nilai j dikurangi 5

q = Partition(0,9) 12 35 9 11 3 17 23 15 31 20 SWAP PIVOT = 12 i = 0 j = 4 i < j maka SWAP 3 35 9 11 12 17 23 15 31 20 SWAP PIVOT = 12 i = 1 j = 3 i < j maka SWAP 3 11 9 35 12 17 23 15 31 20 PIVOT = 12 i = 3 j = 2 i < j (False) NO SWAP Return j = 2 Q = Partisi = 2 QuickSort(0,9) QuickSort(0,2) QuickSort(3,9) 6

QuickSort(0,2) 3 11 9 35 12 17 23 15 31 20 PIVOT = 3 i = 0 j = 0 i < j (False) NO SWAP Return j = 0 Q = Partisi = 0 QuickSort(0,0) QuickSort(1,2) QuickSort(1,2) SWAP PIVOT = 11 i = 1 j = 2 i < j SWAP 35 12 17 23 15 31 20 PIVOT = 11 i = 2 j = 1 i < j NO SWAP Return j = 1 Q = Partisi = 1 7

QuickSort(1,2) QuickSort(1,1) QuickSort(2,2) QuickSort(3,9) 35 12 17 23 15 31 20 PIVOT = 35 i = 3 j = 9 i < j SWAP 20 12 17 23 15 31 35 PIVOT = 35 i = 9 j = 8 i < j NO SWAP Return j = 8 Q = Partisi = 8 QuickSort(3,9) QuickSort(3,8) QuickSort(9,9) 8

20 12 17 23 15 31 35 QuickSort(3,8) PIVOT = 20 i = 3 j = 7 SWAP i < j SWAP 15 12 17 23 20 31 35 PIVOT = 20 i = 6 j = 5 i < j NO SWAP Return j = 5 Q = Partisi = 5 QuickSort(3,8) QuickSort(3,5) QuickSort(6,8) PIVOT = 15 i = 3 j = 4 i < j SWAP SWAP 12 15 17 23 20 31 35 9

PIVOT = 15 i = 4 j = 3 i < j NO SWAP Return j = 3 Q = Partisi = 3 q = 3 QS(3,5) QS(3,3) QS(4,5) 12 15 17 23 20 31 35 QS(4,5) PIVOT = 15 i = 4 j = 4 i < j NO SWAP Return j = 4 Q = Partisi = 4 q = 4 QS(4,5) QS(4,4) QS(5,5) 12 15 17 23 20 31 35 QuickSort(6,8) PIVOT = 23 i = 6 j = 7 i < j SWAP 12 15 17 20 23 31 35 10

PIVOT = 23 i = 7 j = 6 i < j NO SWAP Return j = 6 Q = Partisi = 6 q = 6 QS(6,8) QS(6,6) QS(7,8) PIVOT = 23 QS(7,8) 12 15 17 20 23 31 35 QS(7,8) i = 7 j = 7 i < j NO SWAP Return j = 7 Q = Partisi = 7 QS(7,7) QS(8,8) QuickSort(0,9) q = 2 QuickSort(0,2) QuickSort(3,9) q = 0 q = 8 QS(0,0) QS(1,2) QS(3,8) QS(9,9) q = 1 q = 5 QS(1,1) QS(2,2) QS(3,5) q = 3 q = 6 QS(6,8) QS(3,3) QS(4,5) QS(6,6) QS(7,8) q = 4 q = 7 QS(4,4) QS(5,5) QS(7,7) QS(8,8) 11

Quicksort Analysis Jika diasumsikan pivot diambil secara random, terdistribusi secara uniform Best case running time: O(n log 2 n) Pada setiap pemanggilan rekursif, posisi elemen pivot selalu persis di tengah, array dipecah menjadi dua bagian yang sama, elemen-elemen yang lebih kecil dan yang lebih besar dari pivot Worst case: O(N 2 ) Quicksort Analysis Pada setiap pemanggilan rekursif, pivot selalu merupakan elemen terbesar (atau terkecil); array dipecah menjadi satu bagian yang semua elemennya lebih kecil dari pivot, pivot, dan sebuah bagian lagi array yang empty 12

Summary of Sorting Algorithms Algorithm Time Notes selection-sort O(n 2 ) in-place slow (good for small inputs) insertion-sort O(n 2 ) quick-sort O(n log n) expected merge-sort O(n log n) in-place slow (good for small inputs) in-place, randomized fastest (good for large inputs) sequential data access fast (good for huge inputs) 13