PEMROGRAMAN C++ : Contoh Binary Search Pada C++


Binary search merupakan salah satu teknik pencarian data selain Sequential Search (baca : contoh sequential search di c++), Syarat Utama Binary Search adalah data harus terurut, jika tidak terurut maka pencarian data tidak akan bisa dilakukan. Metode dalam Binary Search adalah mencari nilai tengah, setelah ketemu nilai tengah dan membandingkan nilai tengah dengan data yang dicari, apa

Bila data yang dicari terurut menaik maka berlaku : 
   - jika DATA yang dicari < nilai tengah maka pencarian selanjutnya kanan
   - jika data yang dicari > nilai tengah maka pencarian selanjutnya kiri   
   - jika data yang dicari = nilai tengah maka data ditemukan

Jika terurut menurun maka akan berlaku :
   - jika DATA yang dicari > nilai tengah maka pencarian selanjutnya kanan
   - jika data yang dicari < nilai tengah maka pencarian selanjutnya kiri   
   - jika data yang dicari = nilai tengah maka data ditemukan

Berikut contoh Binary Search Pada C++ jika data yang terurut Menaik:

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

//pastikan data terurut
void main()
{
 int data[9] = {1,2,3,4,5,6,7,8,9};//data yang sudah tersedia
 int awal, akhir, tengah; //variabel awal, akhir, tengah
 bool ketemu;//variabel ketemu dengan tipe data booelean
   cout<<"Data Yang Tersedia\n";
   cout<<"===================\n";
   for (awal = 0; awal<9; awal++)//rumus menampilkan data yang tersedia
   {
    cout<<data[awal]<<" ";//menampilkan data
   }
   int cari;//data yang dicari
   cout<<"\n\nMasukkan Data Yang Ingin Dicari: ";
   cin>>cari;//data yang dicari
   ketemu=false; //ketemu ddidefinisikan bernilai 0 (false)
   awal = 0;//awal bernilai 0
   akhir = 8; //akhir = jumlah data - 1 = 8
   while (ketemu==false && awal <= akhir)//selama ketemu bernilai salah DAN awal<=akhir
   {
    tengah = (awal+akhir)/2;//index tengah = index awal + index akhir / 2
      if (data[tengah]==cari)//jika nilai index tengah < data yang dicari
       ketemu=true;//maka ketemu bernilai benar
      else if (data[tengah]<cari)//jika nilai index tengah < cari
       awal = tengah + 1;// maka index awal = index tengah + 1
      else if (data[tengah]>cari)//jikanilai index > data yang dicari
       akhir = tengah - 1; //akhir =tengah - 1
   }
   if (ketemu==true)//jika ketemu bernilai benar
    cout<<"Data Ditemukan di Index "<<tengah; //tampilkan
   else
    cout<<"Data Tidak Ditemukan";
   getch();
}

Sangat simple kan, Kode diatas juga berlaku jika jumlah datanya adalah genap.

About Unknown

Jika masa muda anda hanya berdiam diri dan tidak melalukan apapun, maka bersiapkan menderita di masa depan.
Previous
Next Post »