Algoritma ini adalah pengembangan dari algoritma pencarian beruntun. Yang dimaksud dengan sentinel adalah elemen fiktif yang sengaja ditambahkan sesudah elemen terakhir dari larik tersebut. Jadi jika elemen terakhir dari larik adalah L[N], maka sentinel diletakkan pada elemen L[N+1]. Akibatnya proses pencarian akan selalu menemukan data yang dicari, akan tetapi harus selalu diperiksa letak data yang ditemukan, apakah:
1.Di antara elemen-elemen larik yang sesungguhnya(antara L[1] sampai dengan L[N])
2.Pada elemen fiktif [L[N+1]]

Algoritma pencarian Sentinel

13
16
14
21
76
21
1
2
3
4
5
6



N = 6 jumlah elemen larik/array semula
1. Misalkan elemen yang dicari adalah X=21 
Maka, tambahkan 21 sebagai elemen sentinel di L[N+1]:  

13
16
14
21
76
21
21
1
2
3
4
5
6
7
Elemen yang diperiksa selama pencarian : 13, 16, 14, 21
Elemen larik yang dikembalikan : 4, karena 4 != N+1, berarti X =21 terdapat di dalam larik semula.

2. Misalkan elemen yang dicari adalah X=13
Maka, tambahkan 13 sebagai elemen sentinel di L[N+1]:
13
16
14
21
76
21
13
1
2
3
4
5
6
7

Elemen yang diperiksa selama pencarian : 13 
Elemen larik yang dikembalikan : 1, karena 1 != N+1, berarti X = 13 terdapat di dalam larik semula.

3. Misalkan elemen yang dicari adalah X=15
Maka, tambahkan 15 sebagai elemen sentinel di L[N+1]:

13
16
14
21
76
21
15
1
2
3
4
5
6
7


Elemen yang diperiksa selama pencarian : 13,16,14,21,76,21,15
Elemen larik yang dikembalikan : 7, ditemukan sebagai elemen sentinel. Karena 7 = N+1, berarti X=15 tidak terdapat di dalam larik semula.

Contoh:
# include <iostream.h>

# include <conio.h>

# include <stdio.h>

# include <math.h>

void main(){

int array[]={1,2,3,4,5}, i=0,x;

cout<<"masukkan data yang akan dicari "; cin>>x;

array[5]=x;

i=0;

while(array[i]!=x)

i++;

if (i<5)

{ cout<<"Data Ketemu“; }

else

cout<<"data tidak ditemukan";

getch();}


Post a Comment

 
Top