Senin, 08 Juni 2015

Searching (Sequential search dan Binarry search)

Pencarian (Searching) merupakan proses yang fundamental dalam pemrograman, guna menemukan data (nilai) tertentu di dalam sekumpulan data yang bertipe sama. Fungsi pencarian itu sendiri adalah untuk memvalidasi (mencocokkan) data.

Metode Pencarian dibagi menjadi 2 yaitu :

Pencarian secara beruntun 
Pencarian secara beruntun dilakukan dengan cara memeriksa elemen larik satu per satu mulai dari indeks=1 hingga indeks dimana elemen tersebut ditemukan. Bila indeks maksimum telah dilampaui maka berarti elemen tersebut tidak ditemukan.
Contoh: Andaikan larik A=[20 15 18 35 40 27], dan x=8. Bila A diperiksa mulai dari indeks=1 maka akan ditemukan pada indeks=3. Namun, bila x=45 maka pemeriksaan tidak berasil menemukan karena hingga indeks=6 elemen ini tetap tidak ditemukan.

Contoh program :

#include <stdio.h>
#include <iostream.h>
#include <conio.h>

main()
{
   int n,i,posisi,x,ketemu;
   int a[5];
   printf("Pencarian data dengan sequential search \n\n");
   printf("Banyak data : ");
   scanf("%d",&n);

   for(i=0;i<n;i++)
   {
      printf("Masukan bilangan : ");
      scanf("%d",&a[i]);
   }
   printf("Data yang dicari : ");
   scanf("%d",&x);
   ketemu=0;
   i=0;
   while((ketemu == 0)&&(i<n))
   {
    if(a[i]==x)
    {
    ketemu=1;
        posisi=i;
    }
   else
   i=i+1;
   }
   if(ketemu==1)
    printf("%d Ditemukan pada posisi %d\n",x,posisi+1);
   else
   printf("%d Tidak ditemukan \n",x);
   getch();
}


Hasil Outputnya : 






















Pencarian Bagi–Dua (Binary Search)
Pencarian bagi-dua adalah teknik yang diterapkan hanya pada elemen larik yang telah terurut (Sorted). Pencarian beruntun memiliki satu kekurangan, yaitu dalam kasus terburuk (Elemen yang dicari berada pada posisi terakhir) maka pencarian harus dilakukan sepanjang larik. Semakin banyak elemen semakin banyak pencarian yang harus dilakukan.

Contoh : Andaikan larik A = [7 10 13 16 18 21 76 81], dan x=10. Pada contoh ini, jumlah elemen m=8 sehingga indeks =8/2=4 dan A[4]=16. Namun, x tidak sama dengan A[4].

Implementasi binary search dalam program :

#include <iostream.h>
#include <conio.h>

int data[10]={1,3,4,7,12,25,40,65,78,90};
int binary_search(int cari)
{
  int a,b,c;
  int n=10;
  a=0;
  b=n-1;
  int ketemu=0;
  while (a<=b && ketemu==0)
  {
    c=(a+b)/2;
    if (data[c]==cari)
    ketemu=1;
    else
    if(cari<data[c])
    b=c-1;
    else a=c+1;
  }
  if(ketemu==1) return 1; else return 0;
}

void main()
{
  clrscr();
  int cari, hasil;
  cout<<"masukan data yang ingin di cari= ";
  cin>>cari;
  hasil = binary_search(cari);
  if(hasil==1)
  {
    cout<<"data ada!"<<endl;
  }
  else
  if(hasil==0)
  cout<<"data tidak ada!"<<endl;
  getch();
}

Hasil Outputnya :



REFERENSI :
Solichin, Achmad (2003). Pemrograman Bahasa C dengan Turbo C. IlmuKomputer.Com.

Tidak ada komentar:

Posting Komentar