Pencarian Sekuensial tanpa sentinel
Pencarian ini dilakukan dengan cara menelurusi data yang ada dalam array dan membandingkannya dengan data yang dicari. Pencarian berhenti ketika data ditemukan atau penelurusan telah mencapai data terakhir.
Contoh :
Data yang dicari adalah : 9
Array :
5 | 8 | 7 | 6 | 9 | 3 | 20 | 2 | 1 | 4 |
Algoritma pencariannya adalah :
a. Inisialisasi variabel ditemukan dengan false
b. Lakukan perulangan i dari 1 (data pertama) selama data ke-i tidak sama dengan data yang dicari (data belum ditemukan) dan selama nilai i masih lebih kecil dari banyak data.
c. Jika data ke-i sama dengan data yang dicari, maka isi variable ditemukan dengan nilai true yang menandakan data telah ditemukan, tetapi jika tidak sama maka variabel i ditambah 1 untuk memeriksa data selanjutnya.
d. Setelah perulangan b s/d c selesai, maka jika variabel ditemukan mempunyai nilai true, berarti data yang dicari ada di posisi ke-i. Jika variabel ditemukan mempunyai nilai false, berarti data yang dicari tidak ditemukan.
Implementasi dari algoritma di atas adalah :
int cari_sekuensial(int data[],int banyakdata,
int dicari)
{
int i=0;
int ditemukan=0;// dalam bahasa c, false adalah nilai 0
while((i
&& // dan
(ditemukan==0))// data belum ditemukan, maka
{
if(data[i]==dicari)
ditemukan=1;//ditemukan diisi dengan true (1)
else
i++;
}
if(ditemukan==1)
return i+1;
else
return 0;
}
Cara penggunaan fungsi tersebut adalah :
int a[5]={10,22,34,42,55};
int bd=5;
int posisi;
clrscr();
posisi=cari_sekuensial(a,bd,34);
if(posisi!=0)
printf("Data ditemukan di posisis : %d\n",posisi);
else
printf("Data tidak ditemukan\n");
Download Artikel
ShoutMix chat widget
0 komentar:
Post a Comment