Searching
Searching adalah metode pencarian
informasi dalam suatu aplikasi, dengan suatu
kunci( key ). Pencarian diperlukan untuk mencari informasi
khusus dari table pada saat lokasi yang pasti dari informasi tersebut
sebelumnya tidak diketahui. Pencarian selalu dinyatakan dengan referensi pada
adanya sekelompok data yang tersimpan secara terorganisasi, kelompok data
tersebut kita sebut table.Pada metode searching (pencarian) ada 2 teknik yang
digunakan yaitu : Pencarian sekuensial (sequential search) dan Pencarian biner
(Binary search).
Sequential Search
Pencarian sekuensial (sequential
search) atau sering disebut pencarian linier menggunakan prinsip sebagai
berikut : data yang ada di bandingkan satu persatu secara berurutan dengan yang
dicari.
Pada dasarnya, pencarian ini
hanya melakukan pengulangan dari 1 sampai dengan jumlah data. Pada setiap
perulangan , di bandingkan data ke-i dengan yang dicari. Apabila sama , berarti
data telah ditemukan . Sebaliknya apabila sampai akhir pengulangan , tidak ada
yang sama berarti data tidak ada.
a. Sekuensial versi berdampingan dengan sintak C:
Contoh listing fungsi dalam bahasa C++ :
Int SequensialSearch(List_type
list, Key_type target)
{ int location; //
penempatan data
for
(location=0;location
if
(EQ(list.entry[location].key,target))
return
location;
return
–1
b. Sekuensial versi berangkai dengan sintak C:
Node_type* SequentialSearch
(List_type list, Key_type target)
{ Node_type* location;
for
(location=list.head;location!=NULL;locatioan->next)
if(EQ(location->info.key,target))
return
location;
return
NULL
}
Pengimplementasian sintak sekuensial search pada bahasa C :
#include
#include
void main()
{
clrscr();
int data[8] =
{3,9,7,-3,11,5,2,18};
int cari,index;
int ketemu=0;
cout<<"Inputkan data
yang ingin di cari = ";
cin>>cari;
for(int i=0;i<8;i++)
{
if(data[i] == cari)
{
ketemu=1;
index=1;
break;
}
}
if(ketemu == 1)
{
cout<<"Data
tersedia!"<
cout<<"Data Terletak
di index ke - "<
}
else cout<<"Data tidak
tersedia!"<
getch();
}
Binary Search
Salah satu syarat pencarian biner
(binary search) dapat dilakukan adalah data sudah dalam keadaan terurut. Dengan
kata lain, apabila data belum dalam keadaan terurut , pencarian biner tidak
dapat dilakukan . Dalam kehidupan sehari-hari, sebenarnya kita juga serig
menggunakan pencarian biner. Misalnya saat kita ingin mencari suatu kata dalam
kamus.
Langkah dalam pencarian biner
adalah :
1. Mula-mula diambil dari
posisi awal=1 dan posisi akhir = n
2. Kemudian kita cari posisi data tengah dengan rumus
posisi tengah = (posisi awal + posisi akhir ) div 2
3. Kemudian data yang di
cari dibandingkan dengan data tengah
a. Jika sama, data
ditemukan, Proses selesai
b. Jika lebih kecil, proses dilakukan kembali tetapi
posisi akhir dianggap sama dengan posisi tengah -1,
c. Jika lebih besar , proses dilakukan kembali tetapi
posisi awal dianggap sama dengan posisi tengah +1.
4. Ulangi langkah kedua hingga data ditemukan , atau
tidak ditemukan.
5. Pencarian biner ini akan
berakhir jika data ditemukan posisi awal lebih besar dari pada posisi akhir.
Jika posisi awal sudah lebih besar dari posisis akhir berarti data tidak
diketemukan.
Contoh sintak Binary search pada bahasa C:
#include
#include
int data[10] =
{1,4,6,8,18,23,35,49,60,75};
int binary_search(int cari)
{
int l,r,m;
int n = 10;
l = 0;
r = n-1;
int ketemu = 0;
while(l<=r &&
ketemu==0)
{
m = (l+r)/2;
if ( data[m] == cari )
ketemu = 1;
else
if (cari <>
r = m-1;
else l = m+1;
}
if(ketemu == 1) return 1; else
return 0;
}
void main()
{
clrscr();
int cari,hasil;
cout<<"Masukan data
yang ingin dicari = ";
cin>>cari;
hasil = binary_search(cari);
if(hasil == 1)
{
cout<<"Data
tersedia!"<
}
else
if(hasil == 0)
cout<<"Data tidak
tersedia!"<
getch();
}
· Pencarian Sekuensial :
a. Kelebihannya :
- Relatif lebih cepat dan
efisien untuk data yang terbatas
- Algoritma sederhana
b. Kekuranganya :
- Kurang cepat untuk data
dalam jumlah besar
- Beban komputasi cenderung
lebih besar
- Pencarian Biner :
a. Kelebihannya :
- Untuk data dalam jumlah
besar, waktu searching lebih cepat
- Beban komputasi lebih
kecil
b. Kekuranganya :
- Data harus sudah di-sorting lebih dulu ( dalam
keadaan terurut )