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.
Ingin Mendapatkan Tutorial Lewat Email ?

ConversionConversion EmoticonEmoticon