Pencarian (Searching) merupakan proses yang fundamental
dalam pemrograman, guna menemukan data (nilai) tertentu di dalam sekumpulan
data yang bertipe sama. Fungsi pencarian itu sendiri adalah untuk memvalidasi
(mencocokkan) data.
Metode Pencarian dibagi menjadi 2 yaitu :
Pencarian secara beruntun
Pencarian secara beruntun dilakukan dengan cara memeriksa
elemen larik satu per satu mulai dari indeks=1 hingga indeks dimana elemen
tersebut ditemukan. Bila indeks maksimum telah dilampaui maka berarti elemen
tersebut tidak ditemukan.
Contoh: Andaikan larik A=[20 15 18 35 40 27], dan x=8. Bila
A diperiksa mulai dari indeks=1 maka akan ditemukan pada indeks=3. Namun, bila
x=45 maka pemeriksaan tidak berasil menemukan karena hingga indeks=6 elemen ini
tetap tidak ditemukan.
Contoh program :
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
main()
{
int n,i,posisi,x,ketemu;
int a[5];
printf("Pencarian data dengan sequential
search \n\n");
printf("Banyak data : ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Masukan bilangan
: ");
scanf("%d",&a[i]);
}
printf("Data yang dicari : ");
scanf("%d",&x);
ketemu=0;
i=0;
while((ketemu == 0)&&(i<n))
{
if(a[i]==x)
{
ketemu=1;
posisi=i;
}
else
i=i+1;
}
if(ketemu==1)
printf("%d Ditemukan pada posisi
%d\n",x,posisi+1);
else
printf("%d Tidak ditemukan \n",x);
getch();
}
Pencarian Bagi–Dua (Binary Search)
Pencarian bagi-dua adalah teknik yang diterapkan hanya pada
elemen larik yang telah terurut (Sorted). Pencarian beruntun memiliki satu
kekurangan, yaitu dalam kasus terburuk (Elemen yang dicari berada pada posisi
terakhir) maka pencarian harus dilakukan sepanjang larik. Semakin banyak elemen
semakin banyak pencarian yang harus dilakukan.
Contoh : Andaikan larik A = [7 10 13 16 18 21 76 81], dan
x=10. Pada contoh ini, jumlah elemen m=8 sehingga indeks =8/2=4 dan A[4]=16.
Namun, x tidak sama dengan A[4].
Implementasi binary search dalam program :
#include <iostream.h>
#include <conio.h>
int data[10]={1,3,4,7,12,25,40,65,78,90};
int binary_search(int cari)
{
int a,b,c;
int n=10;
a=0;
b=n-1;
int ketemu=0;
while (a<=b && ketemu==0)
{
c=(a+b)/2;
if (data[c]==cari)
ketemu=1;
else
if(cari<data[c])
b=c-1;
else a=c+1;
}
if(ketemu==1) return 1; else return 0;
}
void main()
{
clrscr();
int cari, hasil;
cout<<"masukan data yang ingin di cari=
";
cin>>cari;
hasil = binary_search(cari);
if(hasil==1)
{
cout<<"data
ada!"<<endl;
}
else
if(hasil==0)
cout<<"data tidak ada!"<<endl;
getch();
}
REFERENSI :
Solichin, Achmad (2003). Pemrograman Bahasa C dengan Turbo
C. IlmuKomputer.Com.



Tidak ada komentar:
Posting Komentar