SORTING DASAR PEMROGRAMAN Hartanto Tantriawan, S.Kom., M.Kom
TUJUAN PERKULIAHAN Mahasiswa mengetahui konsep mengurutkan sekumpulan elemen Mahasiswa dapat menggunakan teknik sorting dalam kasus yang diberikan Mahasiswa mampu mengimplementasikan konsep pengurutan elemen kedalam bahasa pemrograman C++
SORTING Suatu cara yang bertujuan untuk mengurutkan sekumpulan elemen ke dalam urutan tertentu Kegunaan umum : mengurutkan nilai dari suatu data, dimulai dari yang paling kecil sampai paling besar. Contoh: Mengurutkan nilai ujian dari yang paling besar sampai ke yang paling kecil Mengurutkan nama mahasiswa berdasarkan huruf alfabet
JENIS-JENIS SORTING Bubble sort Insertion sort Merge sort
BUBBLE SORT Bubble sort atau metode gelembung adalah salah satu metode pengurutan data dengan cara membandingkan masing-masing elemen, kemudian melakukan penukaran bila perlu. Metode ini mudah untuk diprogram, namun jika dibandingkan dengan metode lain metode gelembung merupakan metode yang paling tidak efisien
PSEUDOCODE BUBBLE SORT procedure bubblesort ( A : list of sortable items ) if length(a) > 1 then n = length(a) repeat swapped = false for i = 1 to n-1 do /* if this pair is out of order */ if A[i+1] < A[i] then /* swap them and remember something changed */ swap( A[i+1], A[i] ) swapped = true end if end for n = n - 1 until not swapped or n = 1 end if end procedure
SOURCE CODE BUBLE SORT { int i,j,temp; for(i=0;i<n;i++) { for(j=0;j<(n-i);j++) { if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } }
CONTOH KASUS BUBBLE SORT Diketahui : int v[5] = {9, 11, 3, 7, 8} Dengan menggunakan bubble sort, urutkan elemen array v dari yang terkecil sampai yang terbesar
ILUSTRASI PROSES BUBBLE SORT Diketahui Data = 9 11 3 7 8 ada 5 data index untuk data tersebut dimulai dari 0 s/d 4 jadi Algoritma bubble sort dengan 5 data membutuhkan maksimum 4 langkah iterasi jika ada n data, berarti ada maksimum n-1 iterasi Lakukan iterasi berikut:
CONTOH Misalkan data awal adalah : 9, 11, 3, 7, 8 Cari bilangan terkecil dari 5 data([0]s/d[4]), dan tempatkan di index 0 Caranya dengan membandingkan data-data yang bersebelahan misal [n] dan [n+1]. Jika [n+1]<[n], maka data [n] dan [n+1] ditukar.
ITERASI-1 Data awal : 9, 11, 3, 7, 8 Dari b=0 sampai b=3 kerjakan: Untuk b=0: data[0]>data[1]? 9 > 11? tidak data[0] dan [1] tidak ditukar data=9,11,3,7,8 Untuk b=1: data[1]>data[2]? 11 > 3? Ya data[1] dan [2] ditukar Data=9,3,11,7,8 Untuk b=2: data[2]>data[3] 11 > 7? Ya data[2] dan [3] ditukar Data=9,3,7,11,8 Untuk b=3: data[3]>data[4] 11 > 8? Ya data[0] dan [1] ditukar Data=9,3,7,8,11 Data akhir iterasi-1 : 9,3,7,8,11
ITERASI-2 Data awal iterasi-2: 9,3,7,8,11 Dari b=0 sampai b=2 kerjakan : Untuk b=0: data[0]>data[1]? 9>3? Ya [0] dan [1] ditukar Data = 3,9,7,8,11 Untuk b=1: data[1]>data[2]? 9>7? Ya [1] dan [2] ditukar Data = 3,7,9,8,11 Untuk b=2: data[2]>data[3] 9>8? tidak data[2] dan [3] tidak ditukar Data = 3,7,8,9,11 Data akhir iterasi-2 : 3,7,8,9,11
ITERASI-3 Data awal iterasi-3: 3,7,8,9,11 Dari b=0 sampai b=1 kerjakan: Untuk b=0: data[0]>data[1]? 3>7? tidak data[0] dan [1] tidak ditukar Data = 3,7,8,9,11 Untuk b=1: data[1]>data[2]? 7>8? tidak data[0] dan [1] tidak ditukar Data = 3,7,8,9,11 Data akhir iterasi-3: 3,7,8,9,11
ITERASI-4 Data awal iterasi-4 : 3,7,8,9,11 Dari b=0 sampai b=0 kerjakan: Untuk b=0: data[0]>data[1]? 3>7? Tidak [0] dan [1] tidak ditukar Data = 3,7,8,9,11 Data akhir iterasi-4 : 3,7,8,9,11 Data output algoritma bubble sort : 3,7,8,9,11
TIME ANALYSIS BUBBLE SORT Worst case : O(n 2 ) Average case : O(n 2 ) Best case : O(n)
INSERTION SORT Metode pengurutan data dengan menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array berhasil diurutkan Metode ini mengurutkan bilangan-bilangan yang telah dibaca; dan berikutnya secara berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca ke sisi array yang telah terurut
PSEUDOCODE INSERTION SORT procedure InsSort ( A : list of sortable items ) if length(a) > 1 then for i = 1 to length(a)-1 do j = i while j > 0 and A[j-1] > A[j] do swap ( A[j], A[j-1] ) j = j 1 end while end for end if end procedure
SOURCE CODE INSERTION SORT int i,j,key; for(i=1;i<n;i++) { key = a[i]; j = i-1; while (j >= 0 && a[j] > key) { a[j+1] =a[j]; j=j-1; } a[j+1]=key; }
TIME ANALYSIS INSERTION SORT Worst case : O(n 2 ) Average case : O(n 2 ) Best case : O(n)
TIME ANALYSIS BUBBLE SORT Worst case : O(n 2 ) Average case : O(n 2 ) Best case : O(n)
REFERENSI http://te.ugm.ac.id/~enas/progdas/chapter6/algoritma%20sorting.ppt http://entin.lecturer.pens.ac.id/struktur%20data%20&%20algoritma/buku/ Data%20Structure%20-%20Bab%206.pdf https://teachinglondoncomputing.org/the-bubblesort-activity/ http://arna.lecturer.pens.ac.id/modul_asd/8.1%20insertion-sort.pdf Video : Bubble sort : https://www.youtube.com/watch?v=8kp-8ogwphy Insertion sort : https://www.youtube.com/watch?v=dfg-xuypyuq Merge sort : https://www.youtube.com/watch?v=eeq8pwjqxtm
Terima Kasih
PR Pelajari cara mengurutkan data dengan menggunakan teknik merge sort Selection Sort Quick Sort