Pencarian sekuensial dengan sentinel
Pencarian ini dilakukan dengan cara menelusuri data yang ada di array dan membandingkannya dengan data yang dicari sampai data yang dicari ditemukan. Oleh karena itu, maka untuk mengatasi apabila data yang dicari tidak ada di array, maka digunakan sentinel yaitu suatu Pencarian yang menggunakan sentinel selalu dapat menemukan data. Tetapi sebelum pencarian data, ada proses pengisian sentinel (data terakhir diisi dengan data yang dicari),
Contoh 1:
Data yang dicari adalah : 7
Banyak data : 5
Array :
5 | 8 | 7 | 6 | 9 |
Ketika pencarian, nilai yang dicari diisikan ke urutan terakhir.
Sehingga array berisi :
5 | 8 | 7 | 6 | 9 | 7 |
Sehingga ketika pencarian dengan teknik ini, maka pencarian akan selalu menemukan data yang dicari. Untuk menentukan kondisi apakah data tersebut ditemukan atau tidak adalah dengan memeriksa di index ke berapa data tersebut ditemukan. Jika index data bernilai masih di bawah atau sama dengan banyak data yang ada di array, maka itu berarti data ditemukan dan jika index data melebihi dari banyak data yang ada di array berarti data tidak ditemukan.
Untuk kasus di atas, maka pencarian akan berakhir pada index ke-3, karena data ada. Tetapi kalau data yang dicari adalah 10, maka array akan berisi :
5 | 8 | 7 | 6 | 9 | 10 |
Sehingga pencarian akan berakhir pada index ke-6. Karena 6 lebih besar dari 5 (banyak data), itu berarti data tidak ditemukan.
Kekurangan dari algoritma ini adalah kita harus menyediakan 1 tempat untuk sentinel.
Contoh script berbahasa C untuk pencarian menggunakan sentinel adalah sebagai berikut :
int cari_sekuensial_sentinel(int data[],int banyakdata,
int dicari)
{ int i=0;
data[banyakdata]=dicari;//pengisian sentinel
while(data[i]!=dicari)//selama belum ditemukan
{
i++;
}
if(i
return i+1;
else
return 0;
}
Cara penggunaan fungsi pencarian ini adalah :
int a[6]={10,22,34,42,55,0};//0 untuk sentinel
int bd=5;
int posisi;
clrscr();
view_array(a,bd);printf("\n");
posisi=cari_sekuensial_sentinel(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