Sorting Algorithms. Buble Sort

dokumen-dokumen yang mirip
SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Sorting Algorithms. Definisi

Algoritma Sorting (Selection Insertion)

ALGORITMA PENGURUTAN & PENCARIAN

SORTING. Brigida Arie Minartiningtyas, M.Kom

Bubble Sort dan Shell-Sort. Yuliana Setiowati

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

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

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

Pengurutan (Sorting) Algoritma Pemrograman

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Sorting Algorithms. Divide and Conquer

SORTING (PENGURUTAN DATA)

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

BAB VI SORTIR ATAU PENGURUTAN

Analisis Algoritma Bubble Sort

Algoritma Bubble Sort dan Quick Sort

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

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

STRATEGI DIVIDE AND CONQUER

SEARCHING & SORTING. Pendahuluan

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

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

Kompleksitas Algoritma (1)

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

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

Pengertian Algoritma Pengurutan

Kompleksitas Algoritma Sorting yang Populer Dipakai

Analisis Kecepatan Sorting Dengan Notasi Big O

STRUKTUR DATA SORTING ARRAY

Outline STRUKTUR DATA. VII. Sorting

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

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

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

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

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

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

Kompleksitas Algoritma

Pengurutan (Sorting)

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

BAB V SORTING (PENGURUTAN) INTERNAL

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

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

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

Gambar 13.1 Ilustrasi proses algoritma sorting

Simple Sorting Techniques

PERTEMUAN 10 METODE DEVIDE AND CONQUER

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

Design and Analysis Algorithm

Kompleksitas Algoritma

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

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

MODUL IV PENCARIAN DAN PENGURUTAN

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

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

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

STRUKTUR DATA (3) sorting array. M.Cs

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

DATA SORTING. Altien Jonathan Rindengan, S.Si, M.Kom

PERTEMUAN 10 METODE DEVIDE AND CONQUER

BAB 2 LANDASAN TEORI

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

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

BAB 8 SORTING DAN SEARCHING

Bubble Sort (Pengurutan Gelembung / Pemberatan)

Sorting. Pertemuan ke 14.

Modul Praktikum Algoritma dan Struktur Data

7. SORTING DAN SEARCHING

METODE DEVIDE AND CONQUER

Algoritma dan Struktur Data

Algoritma dan Pemrograman 2 PENGURUTAN

BAB VI Pengurutan (Sorting)

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

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Algoritma dan Pemrograman Searching/Pencarian

BAB II TINJAUAN PUSTAKA

Algoritma dan Struktur Data. Searching dan Sorting

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Politeknik Elektronika Negeri Surabaya

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Nama : Suseno Rudiansyah NPM : Kelas : X2T Prodi : Teknik Informatika Tugas : Kuis Algoritma 2

A. TUJUAN PEMBELAJARAN

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

Modul 8 SORTING (PENGURUTAN)

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

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

SORTING (BAGIAN II) Proses kelima

METODE DEVIDE AND CONQUER (DANDC)

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

A. TUJUAN PEMBELAJARAN

Selection, Looping, Branching

BAB VII ALGORITMA DIVIDE AND CONQUER

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

Array (Tabel) bagian 2

Transkripsi:

1. Insertion 2. Selection 3. Bubble 4. Shell 5. Quick 6. Merge Sorting Algorithms 1 Buble Sort Metode gelembung (bubble sort) disebut dengan metode penukaran (exchange sort) adalah metode yang mengurutkan data dengan cara membandingkan masing-masing elemen, kemudian melakukan penukaran bila perlu. Metode ini mudah dipahami dan diprogram, tetapi bila dibandingkan dengan metode lain yang kita pelajari, metode ini merupakan metode yang paling tidak efisien. 2 1

"Bubbling Up" the Largest Element Mengecek sekumpulan elemen Memindahkannya dari posisi awal ke akhir Menggelembungkan" nilai terbesar ke bagian akhir menggunakan metode pembandingan sepasang dan penukaran 77 42 35 12 101 5 3 "Bubbling Up" the Largest Element Traverse a collection of elements Move from the front to the end Bubble the largest value to the end using pairwise comparisons and swapping 77 42 Swap 42 77 35 12 101 5 4 2

"Bubbling Up" the Largest Element Traverse a collection of elements Move from the front to the end Bubble the largest value to the end using pairwise comparisons and swapping 42 77 35 Swap 35 77 12 101 5 5 "Bubbling Up" the Largest Element Traverse a collection of elements Move from the front to the end Bubble the largest value to the end using pairwise comparisons and swapping 42 35 77 12 Swap 12 77 101 5 6 3

"Bubbling Up" the Largest Element Traverse a collection of elements Move from the front to the end Bubble the largest value to the end using pairwise comparisons and swapping 42 35 12 77 101 5 No need to swap 7 "Bubbling Up" the Largest Element Traverse a collection of elements Move from the front to the end Bubble the largest value to the end using pairwise comparisons and swapping 42 35 12 77 101 5 Swap 101 5 8 4

"Bubbling Up" the Largest Element Traverse a collection of elements Move from the front to the end Bubble the largest value to the end using pairwise comparisons and swapping 42 35 12 77 5 101 Nilai terbesar telah menempati posisinya 9 Algoritma Metode Bubble Sort untuk satu kali iterasi 1. index 0 2. pos_akhir n-2 3. selama index <= pos_akhir kerjakan baris 4 dan 5 4. Jika A[index] > A[index+1] Swap(A[index], A[index+1]) 5. index index + 1 10 5

Algoritma Metode Bubble Sort versi 2 index <- 0 pos_akhir <- n 2 loop while(index < pos_akhir) if(a[index] > A[index + 1]) then Swap(A[index], A[index + 1]) endif index <- index + 1 endloop 11 Yang perlu diperhatikan. Perhatikan bahwa hanya nilai terbesar yang sudah menempati posisinya Seluruh nilai yang lain masih belum terurutkan Sehingga kita perlu mengulang proses ini 42 35 12 77 5 101 Nilai terbesar telah menempati posisinya 12 6

Repeat Bubble Up How Many Times? Jika kita punya N elemen Dan jika setiap kali kita menggelembung kan sebuah elemen, kita menempatkannya pada posisi yang tepat Berarti, kita mengulang proses bubble up sebanyak N 1 kali. Hal ini menjamin kita akan menempatkan seluruh N elemen secara tepat. 13 Bubbling All the Elements N - 1 42 35 12 77 5 101 35 12 42 5 77 101 12 35 5 42 77 101 12 5 35 42 77 101 5 12 35 42 77 101 14 7

Mengurangi Jumlah Pembandingan 77 42 35 12 101 5 42 35 12 77 5 101 35 12 42 5 77 101 12 35 5 42 77 101 12 5 35 42 77 101 15 Mengurangi Jumlah Pembandingan Pada proses bubble up ke-n, kita hanya butuh untuk melakukan sebanyak MAX-N pembandingan. Contoh: Ini adalah proses bubble up ke-4 MAX adalah 6 So, kita punya 2 pembandingan yang harus dilakukan 12 35 5 42 77 101 16 8

Putting It All Together 17 N adalah //Ukuran array Arr_Type define as Array[0..N-1] of Num Procedure Swap(n1, n2 isoftype in/out Num) temp isoftype Num temp <- n1 n1 <- n2 n2 <- temp endprocedure //Swap 18 9

procedure Bubblesort(A isoftype in/out Arr_Type) pos_akhir, index isoftype Num pos_akhir <- N 2 loop while(pos_akhir > 0) index <- 0 loop while(index <= pos_akhir) if(a[index] > A[index + 1]) then Swap(A[index], A[index + 1]) endif index <- index + 1 endloop pos_akhir <- pos_akhir - 1 endloop endprocedure // Bubblesort Inner loop Outer loop 19 Apakah seluruh elemen telah terurut? Bagaimana jika seluruh elemen telah terurut? Bagaimana jika hanya sedikit elemen yang tidak pada posisinya, dan setelah beberapa operasi bubble up, seluruh elemen telah terurut? Kita menginginkan untuk bisa mendeteksi kondisi ini dan stop early! 5 12 35 42 77 101 20 10

Gunakan sebuah Flag Boolean Kita bisa menggunakan sebuah variabel boolean untuk menentukan apakah terjadi operasi swapping selama proses bubble up. Jika tidak terjadi, maka kita akan mengetahui bahwa seluruh elemen telah terurut! flag boolean ini perlu di-reset setiap kali selesai satu kali operasi bubble up. 21 did_swap isoftype Boolean did_swap <- true i <- 0 while (i < n-1 AND did_swap) j <- 0 did_swap <- false //did_swap direset while(j < n-i-1) if(a[j] > A[j + 1]) then Swap(A[j], A[j + 1]) did_swap <- true endif j <- j + 1 endloop i <- i + 1 endloop 22 11

Summary Algoritma Bubble Up akan memindahkan nilai terbesar ke posisinya yang tepat (di sebelah kanan) Ulangi proses Bubble Up sampai seluruh elemen telah menempati posisinya yang tepat: Maximum sebanyak N-1 kali Bisa berakhir lebih cepat jika tidak lagi terjadi swapping (penukaran) Kita mengurangi jumlah pembandingan elemen setiap kali satu elemen berhasil diletakkan pada posisinya yang tepat. 23 Analysis of Bubble Sort Berapa kali pembandingan pada inner loop? pos_akhir dimulai dari nilai N-2 turun sampai dengan 0, sehingga pembandingan pada inner loop adalah N-1 kali Average: N/2 untuk setiap kali pass outer loop. Berapa kali pass outer loop? N 1 24 12

procedure BubbleSort(A isoftype in/out Arr_Type) pos_akhir, index isoftype Num pos_akhir <- N 2 N-1 loop while(pos_akhir > 0) index <- 0 loop while(index < pos_akhir) if(a[index] > A[index + 1]) then pos_akhir Swap(A[index], A[index + 1]) endif index <- index + 1 endloop pos_akhir <- pos_akhir - 1 endloop endprocedure // Bubblesort 25 Bubble Sort Analysis BEST CASE: - Array sudah dalam keadaan terurut naik - Jumlah pembandingan key (C) : n-1 - Jumlah swap = 0 - Jumlah pergeseran (M) : 0 WORST CASE - Array dalam urutan kebalikannya - Jumlah pembandingan key (C) : (n-1) + (n-2) +.. + 1 = n * (n-1) / 2 - Jumlah swap = (n-1) + (n-2) +.. + 1 = n * (n-1) / 2 - Jumlah pergeseran (M) : 3 * n * (n-1) / 2 26 13

Kompleksitas Bubble Sort Perhatikan pada hubungan antara 2 loop yang ada: Inner loop bersarang di dalam outer loop Inner loop akan dieksekusi untuk setiap iterasi dari outer loop 27 Bubble Sort Mirip dengan Selection, setiap kali proses Bubble Up akan memilih nilai maksimum dari elemen yang ada pada sisi unsorted Wastes time imparting some order to the unsorted part of the array 28 14

O(N 2 ) Runtime Example Assume you are sorting 250,000,000 items N = 250,000,000 N 2 = 6.25 x 10 16 If you can do one operation per nanosecond (10-9 sec) which is fast! It will take 6.25 x 10 7 seconds So 6.25 x 10 7 60 x 60 x 24 x 365 = 1.98 years 29 15