Yang dimaksud dengan sentinel adalah elemen fiktif yang sengaja ditambahkan sesudah elemen terakhir larik. Jika elemen larik terakhir L[N], maka sentinel dipasang pada elemen L[N+1]. Sentinel ini harganya sama dengan elemen yang dicari. Akibatnya proses pencarian selalu berhasil menemukan data yang dicari. Walaupun demikian harus diperiksa lagi letak data tersebut ditemukan, apakah:
1. Di atara elemen-elemen larik sesungguhnya, yaitu L[1]…L[N]
2. Pada elemen fiktif (L[N+1]) berarti X sesungguhnya tidak terdapat di dalam larik L.
Pencarian Bagidua
• Pencarian bagidua atau pencarian biner adalah metode pencarian yang diterapkan pada sekumpulan data yang sudah terurut (terurut menaik atau terurut menurun).
• Data yang terurut syarat mutlak penerapan algoritma ini.
• Salah satu keuntungan data terurut adalah memudahkan pencarian, dalam hal ini pencarian bagidua.
Langkah-langkah Pencarian Bagidua
Misalkan indeks kiri adalah Ia dan indeks kanan adalah Ib. Kondisi awal Ia=1 dan Ib = N. Langkah 1. Bagi dua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indeks k = (Ia+Ib) div 2 (elemen tengah , L[k], membagi larik menjadi dua bagian, yaitu bagian kiri L[Ia..k-1] dan bagian kanan L[K+1..Ib]) Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 13 Langkah 2. Periksa apakah L[k] = X. jika L[k] = X, pencarian dihentikan sebab X sudah ditemukan. Tetapi, jika L[k] ≠ X, harus ditentukan apakah
pencarian akan dilakukan di larik bagian kiri atau di bagian kanan. Jika L[k] < X, maka pencarian dilakukan pada bagian kiri. Sebaliknya, jika L[k] > X, pencarian dilakukan pada larik bagian kanan. Langkah 3. Ulangi langkah 1 sampai X ditemukan atau Ia > Ib (ukuran larik sudah nol).
#include <stdio.h>
int main(){
int data[7] = {3,12,9,-4,21,6};
int cari,i;
printf("masukkan data yang ingin dicari = ");
scanf("%d",&cari);
data[6] = cari;
i=0;
while(data[i] != cari){
i++;
}
if(i<6){
printf("Data ada!\n");
}
else{
printf("Data tidak ada!\n");
}
getch();
return 1;
}
int main(){
int data[7] = {3,12,9,-4,21,6};
int cari,i;
printf("masukkan data yang ingin dicari = ");
scanf("%d",&cari);
data[6] = cari;
i=0;
while(data[i] != cari){
i++;
}
if(i<6){
printf("Data ada!\n");
}
else{
printf("Data tidak ada!\n");
}
getch();
return 1;
}
Tidak ada komentar:
Posting Komentar