Jumat, 05 Juni 2015

SEARCHING (Pencarian)



Pengertian Searching      

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:

  1. Metode Pencarian Beruntun (sequensial search)
  2. metode pencarian bagi dua (binary search) 

Metode Pencarian Beruntun (sequensial search)


Pengertian

Pencarian berurutan (squensial search) adalah mengunakan konsep membandingkan data-data yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai elemen ditemukan, atau sampai elemen terakhir.

Contoh program squensial search


#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main()
{
     //deklarasi variabel
     int A[10],index[10], i,j,k,n;
     //proses penginputan data
     cout<<"Masukkan jumlah data [Max 10] : ";
     cin>>n;
     for(i=0;i<n;i++)
     {
     cout<<"Masukkan Data ke - "<<(i+1)<<" = ";
cin>>A[i];
     }
     //memasukkan data yang akan dicari ke dalam K
   cout<<"Masukkan data yang anda akan cari : ";
   cin>>k;
     //proses pencarian data
     j=0;
     for (i=0;i<n;i++)
     {
           if(A[i]==k)
           {
                index[j]=i;
                j++;
           }
   }
     //jika data ditemukan dalam array

     if (j>0)
     {
           cout<<"Data" <<k<< "yang dicari ada" <<j<< "buah"<<endl;
           cout<<"Data tersebut terdapat dalam index ke : ";
          for(i=0;i<j;i++)
           {
                     cout<<index[i]<<" ";
           }
                cout<<endl;
     }
     //jika tidak ditemukan
     else
     {
                cout<<"Data tidak ditemukan dalam array"<<endl;;
     }
     getch();
}

Merode Pencarian Bagi Dua (binary search)


Pengertian

            Binary search adalah teknik pencarian data dalam array dengan cara membagi array menjadi dua bagian setiap kali terjadi proses pengurutan.

Prinsip pencarian binery:

·        
  • Data diambil dari posisi 1 sampai posisi akhir N
  • Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) dibagi 2
  • Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar?
  • Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1
  • Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1
  • Jika data sama, berarti ketemu

Contoh program Binary Search

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{
     //deklarasi variabel
     int A[10],n, i,j,k,tkr,right,left,middle,tm;
     //proses penginputan data
     cout<<"Masukkan jumlah data = "
     cin>>n;
     for(i=0;i<n;i++)
     {
           cout<<"Masukkkan data ke - "<<(i+1)<<" = ";
                cin>>A[i];
     }
cout<<"Masukkan data yang akan anda cari :";
cin>>k;
     //proses pengurutan data
     for(i=0;i<n;i++)
     {
           for(j=i+1;j<n;j++)
           {
                if (A[i]>A[j])
                {
                     tkr=A[i];
                     A[i]=A[j];
                     A[j]=tkr;
                     }
                }
     }
     //proses pencarian data
     tm=0;
     right=n;
     left=0;
     while(right>=left)
     {
           middle=(right+left)/2;
           if(A[middle]==k)
           {
                tm++;
           }
           if(A[middle]<k)
           {
                left=middle+1;
           }
           else
           {

                right=middle-1;
           }
     }
     if (tm>0)
     {
     cout<<"Data " << k << " yang dicari ada dalam array"<<endl;
     }
     //jika tidak ditemukan
     else
     {
     cout<<"Data tidak ditemukan dalam array"<<endl;
     }
     getch();
}


Sumber :
Materi perkuliahan praktikum struktur data
http://hendra-ryuka.blogspot.com/2010/05/searching.html

Tidak ada komentar:

Posting Komentar