You are on page 1of 7

Teknik Searching

Proses pencarian  menemukan data tertentu didalam sekumpulan data 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

Binary Search (Pencarian Biner) dapat dilakukan jika data sudah dalam keadaan
urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat
dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggunakan
pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus.

• 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 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Low High

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 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Low Middle High

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
81 76 21 18 16 13 10 7
1 2 3 4 5 6 7 8
Low Middle High
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 13 10 7
5 6 7 8
lo
High
w

ITERASI 2
Langkah 1:
Low = 5 dan High=8
Elemen tengah Middle = (5+8) div 2 = 13 div 2 = 6
16 13 10 7
5 6 7 8
lo
middle High
w
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 =
middle-1=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
middle

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. Masukan Bil yang dicari X


2. tentukan low=1 dan high = N
3. Tentukan nilai tengah : middle = (low + high) div 2
4. Cek, jika LARIK[middle] = X maka Nilai X yang dicari ditemukan, kelangkah 8
5. jika LARIK[middle] > X maka low=middle+1, kelangkah 7
6. jika LARIK[middle] < X maka high=middle-1, kelangkah 7
7. Jika low > high, “bil X tidak ditemukan” dan kelangkah 8, jika tidak kelangkah 3.
8. selesai.

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

ALGORITMA bentuk lain  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 StraitMAXMIN
 Tehnik D and C

Teknik yang 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 hingga mendapatkan solusi
yang optimal terbagi atas :
a. Best Case
b. Average Case
c. worst Case
BEST CASE

Penyelesaian :
WORST CASE

Penyelesaian :
AVERAGE CASE

Penyelesaian :