120 likes | 324 Views
Pertemuan 10 DIVIDE AND CONQUER (2). Matakuliah : T0034 / Perancangan & Analisis Algoritma Tahun : 2008. SELECTION SORT. Mengurutkan sederetan bilangan dengan cara : Cari bilangan terkecil, tempatkan di posisinya Cari bilangan kedua terkecil, tempatkan di posisinya
E N D
Pertemuan 10DIVIDE AND CONQUER (2) Matakuliah : T0034 / Perancangan & Analisis Algoritma Tahun : 2008
SELECTION SORT • Mengurutkan sederetan bilangan dengan cara : • Cari bilangan terkecil, tempatkan di posisinya • Cari bilangan kedua terkecil, tempatkan di posisinya • Cari bilangan ketiga terkecil, tempatkan di posisinya • dst • Sebuah list sepanjang N akan selesai diurutkan dalam N-1 langkah. [buku utama, bab 3.2 dan bab 5.2.1]
PSEUDOCODE SELECTION SORT 1 for i=1 to N-1 do 2 min=i 3 for j=i+1 to N do 4 if A[j]<A[min] then 5 min=j 6 end if 7 end for 8 swap(A[i],A[min]) 9 end for [buku utama, pseudocode 3.6]
ALUR SELECTION SORT • Misalkan kita akan mengurutkan bilangan 16, 22, 25, 3, 9, 12 dan 23 dengan teknik Selection Sort 16 22 25 3 9 12 23 3 22 25 16 9 12 23 3 9 25 16 22 12 23 3 9 12 16 22 25 23 3 9 12 16 22 25 23 3 9 12 16 22 25 23 3 9 12 16 22 23 25 3 9 12 16 22 23 25 [buku utama, bab 3.2]
KOMPLEKSITAS ALGORITMA • Selection Sort • Merge Sort Θ(n log n) • Quick Sort Θ(n log n)
SELECTION vs MERGE vs QUICK • Quicksort Θ(n log n) • Selection sort Θ(n2) • Tentu sudah jelas Quicksort lebih baik • Tapi bagaimana dengan Merge Sort yang sama-sama memiliki Θ(n log n)? • Apakah bisa dibandingkan dengan teori Big-Oh? • Fact : • Pada umumnya Quicksort lebih cepat daripada Mergesort • Kenapa teori Big-Oh menghasilkan nilai Theta yang sama?
PENCARIAN DATA (SEARCH) • Misalkan kita memiliki sederetan bilangan [2,45,8,9,32,15,27] dan ingin mencari apakah terdapat angka 8 di deretan tersebut. • Sequential Search • Teknik paling dasar dalam pencarian • Algoritma perlu memeriksa satu per satu isi deret dan membandingkannya dengan angka 8 yang dicari • Melakukan pencarian secara berurutan (sequence) • Apabila sampai seluruh isi array telah dibandingkan dan data yang dicari belum ditemukan, berarti pencarian gagal • Sequential search bersifat fleksibel karena bisa dipakai dalam kondisi apa saja, isi array tidak harus dalam keadaan berurut • Kompleksitasnya Ο(n) [buku utama, bab 5.3]
BINARY SEARCH • Karakteristik Binary Search • Merupakan teknik pencarian data secara Divide and Conquer • Isi array harus dalam keadaan berurut • Langkah-langkah : • Misalkan kita akan mencari data X di dalam array A • Tentukan Ak dimana Ak adalah elemen yang terletak tepat di tengah array A • Jika X = Ak, data ditemukan set j = k • Jika X < Ak, maka cari ke kiri ak, lakukan perulangan rekursif • Jika X > Ak, maka cari ke kanan ak, lakukan perulangan rekursif • Jika X tidak ditemukan set j = 0, data yang dicari tidak ada • Kompleksitas algoritma Binary Search adalah Ο(log2 n)
PSEUDOCODE BINARY SEARCH 1 A=[2,8,9,15,27,32,45] 2 display "Angka yang dicari ? " 3 read X 4 iLow=1 5 iHigh=N 6 Hasil=0 7 while (Hasil=0) and (iLow<=iHigh) do 8 iMid=(iLow+iHigh) div 2 9 if A[iMid]=X then 10 Hasil=iMid 11 else if A[iMid]>X then 12 iHigh=iMid-1 13 else if A[iMid]<X then 14 iLow=iMid+1 15 end if 16 end while 17 if Hasil>0 then 18 display "Angka ",X," ada di urutan ke-",Hasil,NL 19 else 20 display "Angka ",X," tidak ditemukan",NL 21 end if [buku utama, pseudocode 5.7] Pelajari cara kerja Binary Search langkah per langkah di bab 5.3
LATIHAN • Jelaskan langkah-langkah mengurutkan bilangan 34, 15, 23, 9, 41, 26, 39, 11, 7, 28 dengan Selection Sort! • Jelaskan langkah-langkah mencari bilangan 15 dari list 7, 9, 11, 15, 23, 26, 28, 34, 39, 41 dengan Binary Search!
REVIEW • Apa yang sudah dipahami? • Apa yang akan dibahas selanjutnya?