Anda di halaman 1dari 5

Pertemuan 11 Teknik Serching Proses pencarian menemukan harga/data tertentu didalam sekumpulan harga yang bertipe sama.

. Dalam proses pemrograman serching/pencarian biasanya digunakan untuk - proses update atau penghapusan data sebelumnya melakukan proses pencarian data. - Penyisipan data pada sekumpulan data, jika data sudah ada maka proses penyisipan tidak diperkenankan. Jika data tidak ada maka proses penyisipan dilakukan tujuan digunakan agar tidak terjadi duplikasi data 1. Tehnik Pencarian Tunggal : Tehnik Sequential Search / Linier Search Tehnik Binary Search

PENCARIAN SEQUENTIAL
Merupakan algoritma pencarian yang sangat sederhana. Proses pencarian beruntun adalah proses membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama sampai elemen yang dicari ditemukan dan seluruh elemn sudah diperiksa.

13

16

14

21

76

21

Nilai yang dicari: 21 Maka elemen yang diperiksa : 13 16 14 21 Index ketemu : 4 Nilai yang dicari: 13 Maka elemen yang diperiksa : 13 Index ketemu : 1 Nilai yang dicari: 15 Maka elemen yang diperiksa : 13 16 14 21 76 21 Index ketemu : 0 Algoritma dari proses Pencarian diatas adalah: 1. Tentukan i=1, Ketemu = 0. 2. Masukan Nilai X nilai yang dicari. 3. Jika Nilai[i] <> X maka i=i+1, kembali kelangkah 2. 4. Jika Nilai[i] = X maka Ketemu =i. 5. Jika Ketemu = 0 maka Cetak nilai X tidak ketemu 6. Jika tidak (Ketemu <>0)Cetak nilai X ketemu pada posisi Ketemu 7. Selesai

Pencarian Binary Search


Metode pencarian yang diterapkan pada sekumpulan data yang sudah terurut (menaik maupun menurun) Metode ini digunakan untuk melakukan pencarian secara cepat dengan data yang sudah terurut.

Konsep Pencarian Binary/Bagi Dua Pilih Indek Kiri (Low) dan Indek Kanan (High) Langkah 1: Bagi dua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indek middle=(low+high) div 2. Elemen tengah (middle), akan membagi array menjadi 2 bagian yaitu: Bagian kiri, dengan index LARIK[Low .. middle-1] Bagian Kanan, dengan index LARIK[middle+1..High] Langkah 2: Periksa apakah LARIK[middle] = X , pencarian akan dihentikan sebab X sudah ditemukan Jika LARIK[middle] <> X, maka kita tentukan pencarian akan dilakukan disebelah kiri atau kanan. Jika LARIK[middle] < X, maka pencarian dilakukan dibagian kiri LARIK Jika LARIK[middle] > X, maka pencarian dilakukan di bagian kanan LARIK Langkah 3: Ulangi langkah 1 sampai dengan X ditemukan, atau low > high (menentukan ukuran larik sudah 0). Ilustrasi Pencarian Bagi Dua. 81 1 Lo w 7 6 2 2 1 3 1 8 4 1 6 5 1 3 6 1 0 7 7 8 Hig h

1. Misalkan elemen yang dicari adalah X=18. Langkah 1: Low = 1 dan High = 8 Elemen tengah Middle = (1+8) div 2 = 9 div 2 = 4 81 1 Lo w 7 6 2 2 1 3 18 4 Middle 1 6 5 1 3 6 1 0 7 7 8 Hig h

Langkah 2: Larik[4] = X ? (18 = 18) true X ditemukan, pencarian dihentikan. 2. Misalkan elemen yang dicari adalah X=16. ITERASI 1 Langkah 1: Low = 1 dan High = 8 Elemen tengah Middle = (1+8) div 2 = 9 div 2 = 4 7 2 1 1 1 81 18 7 6 1 6 3 0 1 2 3 4 5 6 7 8 Lo Hig Middle w h kiri kanan Langkah 2:

Larik[4] = X ? (18 = 16) FALSE, sehingga diputuskan pencarian di kiri atau dikanan. Jika Larik[4] > 16 ?, (18 > 16) TRUE, lakukan pencarian disebelah kanan dengan Low = middle+1 4+1 = 5 dan High = 8, Tetap. 16 5 lo w 1 3 6 1 0 7 7 8 Hig h

ITERASI 2 Langkah 1: Low = 5 dan High=8 Elemen tengah Middle = (5+8) div 2 = 13 div 2 = 6 1 16 13 7 0 5 6 7 8 lo middl Hig w e h Langkah 2: Larik[6] = X ? (13 = 16) FALSE, sehingga diputuskan pencarian di kiri atau dikanan. Jika Larik[6] > 16 ?, (13 > 16) FALSE, lakukan pencarian disebelah KIRI dengan Low = 5 (TETAP) dan High = middle-1 = 5 16 5 Low/high ITERASI 3 Langkah 1: Low = 5 dan High=5 Elemen tengah Middle = (5+5) div 2 = 10 div 2 = 5 16 5 middl e Langkah 2: Larik[5] = X ? (16 = 16) TRUE (X ditemukan , pencarian dihentikan) 3. Misalkan elemen yang dicari X=100. Gambarkan langkah-langkah penyelesaiannya? Dari ilustrasi diatas dapat dibuat algoritma sebagai berikut: (dengan data urut menurun/ descending) 1. 2. 3. 4. Masukan Bil yang dicari X tentukan low=1 dan high = N Tentukan nilai tengah : middle = (low + high) div 2 Cek, jika LARIK[middle] = X maka Nilai X yang dicari ditemukan, kelangkah 8 jika LARIK[middle] > X maka low=middle+1, kelangkah 7 jika LARIK[middle] < X maka high=middle-1, kelangkah 7 Jika low > high, bil X tidak ditemukan dan kelangkah 8, jika tidak kelangkah 3. selesai.

5. 6. 7.
8.

Tugas : 1. buatlah algoritma binary search untuk data yang urut menaik / ascending. Dari algoritma diatas 2. buatlah flowchartnya.

ALGORITMA bentuk lain (ada pada slide) untuk data urut menaik/ascending 1. Low = 1 , High = N 2. Ketika Low <= High Maka kerjakan langkah No .3, Jika tidak Maka kerjakan langkah No.7 3. Tentukan index tengah dengan rumus Middle= ( Low + High ) Div 2 4. Jika X < LARIK[middle] /Nil. Tengah Maka High = Mid 1 5. Jika X > LARIK[middle] /Nil. Tengah Maka Low = Mid +1 6. Jika X = LARIK[middle] /Nil. Tengah Maka Nil. Tengah = Nil. Yg dicari 7. Jika X > High Maka Pencarian GAGAL 2. Tehnik Pencarian Nilai MAXMIN : Tehnik StaritMAXMIN Tehnik D and C Teknik yangt digunakan untuk mencari nilai maksimum dan minimum dari sekumpulan nilai. 1. Tehnik Pencarian MAXMIN Searching dengan Tehnik STRAITMAXMIN Waktu tempuh yang digunakan untuk menyelesaikan pencarian hinggan mendapatkan solusi yang optimal terbagi atas : a. Best Case b. Average Case c. worst Case Algoritma dari Proses Pencarian adalah (ada pada slide): 1. Masukan N, tentukan i=1. 2. Tentukan max dan min = A[i] 3. i = 2 4. Jika i<= N maka kelangkah 5, jika tidak kelangkah 8 5. jika A[i] > max maka max=A[i] dan kelangkah 7 6. jika tidak maka (jika A[i] < min maka min = A[i]. 7. i = i+1, ulangi langkah 4. 8. cetak max dan min program straitmaxmin; var i,N:integer; max,min : integer; A : array[1..10] of integer; begin write('masukan N = '); readln(N); for i:=1 to N do readln(A[i]); max := A[1]; min := A[1]; for i:=2 to N do masukan N = 5 2 5 1 6 4 nilai max min = 6 1 ----------------masukan N = 6 7 5

if A[i] > max then max:=A[i] else if A[i] < min then min := A[i]; writeln; writeln('nilai max min= ',max:3, min:3); end.

3 9 6 2 nilai max min = 9 2

Searching dengan teknik D and C. Penjelasan ada pada slide.

Anda mungkin juga menyukai