Monday, June 3, 2019

Algoritma Pemrograman : Searching Binary Methode



      Terdapat metode pencarian pada data terurut yang paling efficient, yaitu metode pencarian bagi dua atau pencarian biner (binary searching). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mendasari metode ini. Data yang disimpan di dalam larik harus sudah terurut. Binary search adalah metode pencarian suatu data atau elemen di dalam suatu array dengan kondisi data dalam keadaan urut. 

    Intinya, salah satu syarat pencarian biner (binary search) dapat dilakukan adalah data sudah dalam keadaan terurut. Dengan kata lain, apabila data belum dalam keadaan terurut , pencarian biner tidak dapat dilakukan . Dalam kehidupan sehari-hari, sebenarnya kita juga serig menggunakan pencarian biner. Misalnya saat kita ingin mencari suatu kata dalam kamus.

Proses pencarian biner dapat dijelaskan sebagai berikut : 
  1. Mula-mula diambil dari posisi awal=1 dan posisi akhir =n, kemudian di cari posisi tengah rumus: ( posisi awal + posisi akhir )/2. 
  2. Setelah itu data yang dicari dibandingakan dengan data yang berada ditengah.
  3. Jika hasilnya lebih kecil , maka ulangi proses diatas dalam hal ini posisi akhir=posisi tengah-1.  
  4. Jika lebih besar hasilnya maka lakukan proses diatas tetapi dalam hal ini posisi akhir =posisi tengah +1. 

Contoh program searching binary :
#include<iostream>

using namespace std;
int main () {
 int n, angka[12], kiri, kanan, tengah, temp, key;
 bool ketemu = false;

 cout<<"Masukan jumlah data : ";
 cin>>n;

 for(int i=0; i<n; i++)
 {
  cout<<"Angka ke - ["<<i<<"] : ";
  cin>>angka[i];
 }
 for (int i=0; i<n; i++)
 {
  for(int j=0; j< n-i-1; j++)
  {
   if(angka [j] > angka [j+1])
   {
    temp=angka[j];
    angka[j]=angka[j+1];
    angka[j+1]=temp;
   }
  }
 }
 cout<<"Data yang telah diurutkan adalah : ";
 for(int i=0; i<n; i++)
 {
  cout<<angka[i]<<" ";
 }
 cout<<"\n Masukan angka yang dicari : ";
 cin>>key;

 kiri=0;
 kanan=n-1;

 while(kiri<=kanan)
 {
  tengah=(kiri + kanan)/2;
  if(key == angka[tengah])
  {
   ketemu=true;
   break;
  }
  else if (key < angka [tengah])
  {
   kanan = tengah -1;
  }
  else
  {
   kiri = tengah +1;
  }
 }
 if (ketemu == true)
  cout<<"Angka ditemukan!";
 else
  cout<<"Angka tidak ditemukan";
  return 0;
 }


Hasil running program :


No comments:

Post a Comment

Algoritma Pemrograman : Graph dan Pohon

Graph Graf adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan sekumpulan garis (sisi). Graph dapa...