Minggu, 09 Februari 2014

Array Pencarian

A. Definisi
Array pencarian adalah sebuah fasilitas yang digunakan untuk mencari sebuah data dalam sekelompok data dalam array itu sendiri. Array pencarian sendiri terbagi menjadi 2, yaitu sequential search dan binary search. Sequential search adalah pencarian suatu data dalam array dengan cara mengecek satu persatu data, dan biasanya dari kiri ke kanan. Sedangkan Binary search adalah pencarian array dengan memebagi 2 array tersebut sehingga pencarian suatu nilai dalam suatu array dapat lebih cepat, tapi tipe pencarian array binary sangat tidak cocok jika dilakukan dalam array yang belum diurutkan, karena data yang dihasilkan tidak akan sesuai, sehingga untuk data yang belum tersusun dapat dilakukan operasi sequential search, dengan waktu yang cukup lama jikan data yang dicari terletak diujung kelompok data, dan sebaliknya pencarian akan cepat bila data yang dicari terletak dipangkal kelompok data yang dicari.

B. Contoh Program
1. Sequential Search
berikut contoh sequential search:

#include<stdio.h>
#include<stdlib.h>
#define MAX 10
int main(void)
{
  int array[MAX],i=0,cari;   
  printf("Masukkan Daftar Pencarian [maks 10]"); 
  for(i=0;i<10;i++)
   {
     scanf("%d",&array[i]);
   }
   printf("\nMasukakan nilai yang dicari:");
   scanf("%d",&cari);
   for(i=0;i<10;i++)
    {
      if(array[i]==cari)
       {
            printf("\nnilai %d  ditemukan di elemen ke %d",array[i],i+1);
            exit(0);
      }
    }
    printf("\nnilai %d tidak ditemukan",cari);
}

2. Binary Search
Berikut contoh program binary search:
 #include<stdio.h>
int main(){
    int a[10],i,n,m,c=0,l,u,mid;
    printf("Masukkan banyak nilai yang dicari: ");
    scanf("%d",&n);
    printf("Masukkan nilai dari yang terkecil: ");
    for(i=0;i<n;i++){
         scanf("%d",&a[i]);
    }
    printf("Masukkan nilai yang dicari: ");
    scanf("%d",&m);
    l=0,u=n-1;
    while(l<=u){
         mid=(l+u)/2;
         if(m==a[mid]){
             c=1;
             break;
         }
         else if(m<a[mid]){
             u=mid-1;
         }
         else
             l=mid+1;
    }
    if(c==0)
         printf("Nilai Tidak ditemukan");
    else
         printf("Nilai Ditemukan");
    return 0;
}

Tidak ada komentar:

Posting Komentar