Sulidar Fitri, M.Sc Lab Meeting 13 Maret 2014 Binary search & Bubble Sort Sulidar Fitri, M.Sc Lab Meeting 13 Maret 2014
Metode Binary Search pada array terurut naik Membaca array data Apabila array belum terurut, maka diurutkan dulu Menentukan data yang akan dicari Menentukan elemen tengah dari array. Letak posisis tengah dapat ditentukan dengan tengah=(n div 2)+1 Jika elemen tengah sama dengan data yang dicari, maka pencarian selesai Jika nilai elemen tengah tidak sama dengan data yang dicari: Nilai elemen tengah yang lebih besar dari yang dicari maka pencarian dilakukan pada setengah array ke-1 Nilai elemen tengah yang lebih kecil dari yang dicari maka pencarian dilakukan pada setengah array ke-2
Contoh menentukan elemen tengah Dalam array ada 6 data terurut naik: 1 2 3 4 5 6 i=1 s/d n A= 2 7 11 17 17 18 Tengah=(n div 2)+1=(6 div 2)+1 =4 Element_tengah=A[Tengah]=A[4]=17 Jika banyak data genap maka posisi tengahnya tidak tepat ditengah
Contoh menentukan elemen tengah Dalam array ada 7 data terurut naik: 1 2 3 4 5 6 7 i=1 s/d n A= 5 7 8 11 12 14 15 Tengah=(n div 2)+1 =(7 div 2)+1 =4 Element_tengah=A[Tengah]= A[4]=11 Jika banyak data ganjil maka posisi tengahnya tepat ditengah
Contoh Kasus: Dalam array ada 6 data terurut naik: 1 2 3 4 5 6 i=1 s/d n A= 2 7 11 17 17 18 Asumsikan data array yang dimasukan sudah terurut naik Buatlah programnya!
Pseudocode Input (x) T=(n div 2)+1 Else i=t+1 Et=A[t] Ketemu=false If x=et then ketemu=true; posisi=t Else If x<et then i=1 while(ketemu=false)&(i<t)& (a[i<=x]) do if a[i]=x then ketemu=true; posisi=I else i=i+1 endif endwhile Else i=t+1 while (ketemu=false)&(i<=n)& (a[i<=x]) do if a[i]=x then ktemu=true; posisi=1 else i=i+1 endif endwhile endif endif if ketemu=false then write (“Data tidak ketemu”) Else write(“Data ditemukan”) output(posisi)
Buat kode program c++ berdasarkan pseudocode disamping!! Tugas Lab: Buat kode program c++ berdasarkan pseudocode disamping!! Tulis program dg tulis tangan di kertas dobel folio Tempelkan print out output program { data[]: array } { c: elemen yang dicari } { k: index elemen bila ketemu } { l, m, r: penanda pembagian area array } k ← -1 l ← 0 r ← SIZE - 1 WHILE l <= r DO m ← l + (r – 1) / 2 IF c = data[m] THEN k ← m ELSE IF c < data[m] THEN r ← m – 1 ELSE IF c > data[m] THEN l ← m + 1 END WHILE
SORTING : BUBBLE SORT Selalu membandingkan dua data yang berdekatan Ascending: Apabila data yang berada di sebelah kanannya bernilai lebih kecil maka ditukar sampai data terbesar ada di posisi akhir Contoh: 6 Buah data belum terurut 7 5 6 4 3 2
Pseudocode BUBBLE SORT ascending For i=0 to (n-1) do for j=0 to (n-i) do if a[j] > a[j+1] then temp=a[j] a[j] = a[j+1] a[j+1]=temp end if end for endfor