Kamis, 30 Desember 2010

Bahasa C : Searching, Sequential With Sentinel Search


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;
}


Tidak ada komentar:

Posting Komentar