Sesuai dengan judulnya, saya akan membahas proses pencarian / searching data pada suatu array / barisan data. Jika diketahui ada sebuah array / barisan data bernama A yang menampung 10 data yang bertipe integer sbb A={3,5,1,7,4,2,8,6,9,0} dan kita diberi tugas untuk mencari beberapa data misal:
·
Jika
data yang akan dicari dalam array A adalah 7, maka dengan cepat dapat kita
ketahui bahwa data 7 ada dalam array A pada index ke-4 (index pada array
dimulai dari 0)
·
Sedangkan
jika data yang akan dicari dalam array A adalah 10, maka dapat disimpulkan
bahwa array A tidak memiliki data 10 tersebut.
Nah, kita sudah memahami proses pencarian data yang sederhana tersebut
dalam pikiran kita, sekarang permasalahannya adalah bagaimana
mengimplementasikannya kedalam program ?.
Pada umumnya dikenal dua metode searching antara lain : Sequensial search
dan binary search, Untuk lebih memahami kedua metode ini lebih baik kita mulai
dari metode yang paling sederhana terlebih dahulu yaitu sequensial search.
A. Sequensial Search
Disebut juga sebagai metode pencarian urut adalah metode pencarian yang
paling mudah. Bayangkan saja jika anda dihadapkan pada sebuah rak buku, dan
anda diberi tugas untuk mencari sebuah buku dari rak tersebut. Sudah tentu anda
akan mulai mencarinya satu – persatu entah itu dari atas atau dari bawah sampai
buku yang dimaksud ketemu.
Contoh Programnya :
#include<stdio.h>
#include<conio.h>
void main()
{
int A[5],index[5], i,j,k;
for(i=0;i<5;i++)
{
printf("Data ke-%d:",i+1);
scanf("%d",&A[i]);
}
printf("Masukkan Data Yang Anda Cari:");
scanf("%d",&k);
j=0;
for (i=0;i<5;i++)
{
if(A[i]==k)
{
index[j]=i;
j++;
}
}
if (j>0)
{
printf("Data %d yang dicari ada %d buah\n",k,j);
printf("Data tersebut terdapat dalam index ke- :");
for(i=0;i<j;i++)
{
printf(" %d ",index[i]);
}
printf("\n");
}
else
{
printf("Data tidak ditemukan dalam searching array\n");
}
getch();
}
#include<conio.h>
void main()
{
int A[5],index[5], i,j,k;
for(i=0;i<5;i++)
{
printf("Data ke-%d:",i+1);
scanf("%d",&A[i]);
}
printf("Masukkan Data Yang Anda Cari:");
scanf("%d",&k);
j=0;
for (i=0;i<5;i++)
{
if(A[i]==k)
{
index[j]=i;
j++;
}
}
if (j>0)
{
printf("Data %d yang dicari ada %d buah\n",k,j);
printf("Data tersebut terdapat dalam index ke- :");
for(i=0;i<j;i++)
{
printf(" %d ",index[i]);
}
printf("\n");
}
else
{
printf("Data tidak ditemukan dalam searching array\n");
}
getch();
}
B. Binary Search
Proses pencarian binary search hanya dapat dilakukan
pada kumpulan data yang sudah diurutkan
terlebih dahulu. Jika terdapat N buah data yang akan dolah, data yang dicari
akan dibandingkan dengan data ke-N jika data ke-N lebih besar dari data yang
dicari maka akan dilakukan pembagian data menjadi dua bagian. Kemudian ujung
data pada setiap bagian dibandingkan lagi dengan nilai yang akan dicari.
Contoh Programnya :
#include<stdio.h>
#include<conio.h>
void main()
{
int A[10], i,j,k,tkr,top,bottom,middle,tm;
for(i=0;i<10;i++)
{
printf("Data ke-%d:",i+1);
scanf("%d",&A[i]);
}
printf("Masukkan data yang akan anda cari:");
scanf("%d",&k);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if (A[i]>A[j])
{
tkr=A[i];
A[i]=A[j];
A[j]=tkr;
}
}
}
tm=0;
top=9;
bottom=0;
while(top>=bottom)
{
middle=(top+bottom)/2;
if(A[middle]==k)
{
tm++;
}
if(A[middle]<k)
{
bottom=middle+1;
}
else
{
top=middle-1;
}
}
if (tm>0)
{
printf("Data %d yang dicari ada dalam array\n",k);
}
else
{
printf("Data tidak ditemukan dalam array\n");
}
getch();
}
Sumber : Dari Modul Praktek Pemrograman C++
#include<conio.h>
void main()
{
int A[10], i,j,k,tkr,top,bottom,middle,tm;
for(i=0;i<10;i++)
{
printf("Data ke-%d:",i+1);
scanf("%d",&A[i]);
}
printf("Masukkan data yang akan anda cari:");
scanf("%d",&k);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if (A[i]>A[j])
{
tkr=A[i];
A[i]=A[j];
A[j]=tkr;
}
}
}
tm=0;
top=9;
bottom=0;
while(top>=bottom)
{
middle=(top+bottom)/2;
if(A[middle]==k)
{
tm++;
}
if(A[middle]<k)
{
bottom=middle+1;
}
else
{
top=middle-1;
}
}
if (tm>0)
{
printf("Data %d yang dicari ada dalam array\n",k);
}
else
{
printf("Data tidak ditemukan dalam array\n");
}
getch();
}
Sumber : Dari Modul Praktek Pemrograman C++
0 komentar:
Posting Komentar