Searching atau pencarian merupakan proses yang
fundamental dalam pengelolaan data.proses pencarian bertujuan untuk menemukan
data tertentu dalam sekumpulan data yang bertipe sama .
sebagai contoh, saat kita akan mengubah suatu data maka hal yang pertama kali kita lakukan adalah mencari keberadaan data tersebut. Contoh lainnya pada saat ita akan menginsertkan data, hal yang paling pertama kita melakukan pencarian agar tidak menginputkan data yang sama, setalah titu baru kita bias menginputkan data.
sebagai contoh, saat kita akan mengubah suatu data maka hal yang pertama kali kita lakukan adalah mencari keberadaan data tersebut. Contoh lainnya pada saat ita akan menginsertkan data, hal yang paling pertama kita melakukan pencarian agar tidak menginputkan data yang sama, setalah titu baru kita bias menginputkan data.
Ada dua maca metode searching, yaitu :
Sequential Search atau pencarian beruntun
adalah algoritma pencarian yang paling sederhana dibandingkan dengan Bianary
Search. Pada dasarnya metode pencarian ini mengunaka proses mebandingkan satu
persatu secara beruntun mulai dari elemen awal hingga elemen yang dicari
ditemukan, atau seluruh elemen sudah diperiksa. Oleh karena itu metode
sequential search memiliki nama lain yaitu linear search atau pencarian lurus.
Pencarian beruntun dapat dilakukan dengan dua
acara yaitu dengan menguanankan Boolean atau tanpa Boolean .
Contoh pengunaan sequential seach tanpa Boolean
:
Di misalkan data sebagai berikut,
Data
|
3
|
6
|
2
|
9
|
15
|
Indeks
|
1
|
2
|
3
|
4
|
5
|
Data yang di cari adalah 2
lalu program akan membadingkan data yang dicari dengan data yang ada,
lalu program akan membadingkan data yang dicari dengan data yang ada,
Indeks 1(3) = 2 ? tidak
indeks 2(6) = 2 ? tidak
indeks 3(2) = 2 ? ya
indeks 2(6) = 2 ? tidak
indeks 3(2) = 2 ? ya
Setelah dibadingkan ternyata data yang dicari
ditemukan pada indeks ke 3.
Algoritma dari sequential search mengunakan
Boolean.
Contoh pengunaan sequential search dengan boolean
logika pencarian dengan boolean sama dengan
yang tanpa boolean haya algoritmanya saja yang berbeda.
1.
Binary Search
Berbeda dengan sequential search yang bisa
dilakukan dengan data acak, binary search hanya akan berjalan jika data telah
terurut.
Binary search adalah pencarian dengan membagi
larik menjadi dua bagian. Prinsip yang digunakan dalam sequential search sama
seperti kita mencari data dalam kamus, yaitu membagi dua dan dibandingkan,
apabila masil belum ketemu akan dibagi dua dan dibandingkan lagi.
Algoritma:
Di misalkan data sudah terurut :
A
|
3
|
6
|
8
|
12
|
18
|
51
|
62
|
66
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
Kasus
ke-1 : cari = 12
Langkah 1 : tengah = (batasatas + batasbawah) div 2=( 1 + 8 ) div 2 = 4
A [tengah] = A [4] = 12pada Looping pertama data telah ditemukan.
Langkah 1 : tengah = (batasatas + batasbawah) div 2=( 1 + 8 ) div 2 = 4
A [tengah] = A [4] = 12pada Looping pertama data telah ditemukan.
Kasus ke-2 : cari = 10
Langkah pertama :tengah=(batasatas + batasbawah) div 2=( 1 + 8 ) div 2=4
A [tengah] = A [4] = 12 > cari = 10, berarti Batasbawah =tengah – 1 = 4 – 1 = 3
Langkah kedua :tengah=(batasatas + batasbawah) div 2=( 1 + 3 ) div 2=2
A [tengah] = A [2] = 5 < cari = 10, berarti Batasatas =tengah + 1 = 2 + 1 = 3
Langkah ketiga :tengah=(batasatas + batasbawah) div 2=( 3 + 3 ) div 2=3
A [tengah] = A [3] = 8, berarti setelah Langkah ketiga, data tidak ditemukan
Langkah pertama :tengah=(batasatas + batasbawah) div 2=( 1 + 8 ) div 2=4
A [tengah] = A [4] = 12 > cari = 10, berarti Batasbawah =tengah – 1 = 4 – 1 = 3
Langkah kedua :tengah=(batasatas + batasbawah) div 2=( 1 + 3 ) div 2=2
A [tengah] = A [2] = 5 < cari = 10, berarti Batasatas =tengah + 1 = 2 + 1 = 3
Langkah ketiga :tengah=(batasatas + batasbawah) div 2=( 3 + 3 ) div 2=3
A [tengah] = A [3] = 8, berarti setelah Langkah ketiga, data tidak ditemukan
Kedua algoritma pencarian ini memiliki
kelebihan dan kekurangan masing-masing. Algoritma pencarian beruntun dapat
digunakan untuk data yang sudah terurut maupun data yang belum terurut. Sebalik,
Algoritma pencarian bagi dua hanya dapat digunakan jika data telah terurut.
Jika kita tinjau dari kinerja pencarian,
apabila data x tidak ditemukan, algoritma pencarian beruntun akan mencarinya
sebanyak x(banyaknya data), sedangkan algoritma pencarian bagidua memerlukan
waktu yang sebanding dengan 2log(x).
perbandingan anatara algoritma sequential search dengan binary search, dimisalkan data sudah terurut :
perbandingan anatara algoritma sequential search dengan binary search, dimisalkan data sudah terurut :
Untuk larik yang berukuran x = 256 elemen
sequential search melakukan perbandingan
elemen larik
sebanyak 256 kali. Sedangakan , algoritma binary search melakukan
perbandingan elemen larik sebanyak 2log(256) = 8 kali.
sebanyak 256 kali. Sedangakan , algoritma binary search melakukan
perbandingan elemen larik sebanyak 2log(256) = 8 kali.
Referensi :
Munir,renaldi.,Algoritma & Pemrograman Dalam Bahasa Pascal Dan C edisi revisi ,Informatika
Bandung, 2011.
Tidak ada komentar:
Posting Komentar