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