Assalamualaikum Wr Wb
sebelumnya sudah saya share tentang
Sequential Search, nah kali ini saya akan membagikan yaitu Binary Search..
pasti anda tidak asing dengan kata binary, terutama anak IT hehehe
Baca Juga :
Cara membuat Pencarian sederhan dengan metode Sequential Search
sebelum ke inti, saya akan membahas tentang Penjelasan dari Binary Search.
Apa itu Binary Search?
Binary search adalah metode pencarian dengan cara membagi data menjadi 2 bagian.kemudian data data dicari sampai ketemu, dan metode ini sangat cocok untuk DATA yang jumlahnya Besar atau Banyak..
Prosses Binary Search:
1. Membaca data array
2. Jika data array belum urut, maka data diurutkan terlebih dahulu
3. menentukan data yang akan dicari
4. menentukan elemen tengan(MID)
5. jika nilai tengah sama dengan data yang dicari maka pencarian Selesai.
Jka nilai tengah lebih besar dari data yang dicari, maka pencarian dilakukan pada elemen setengah array pertama
jika nilai tengah lebih kecil dari data yang dicari, maka pencarian dilakukan dengan elemen setengah array berikutnya
Contoh:
Baris A beserta data
A{1,2,3,4,5,6,7,8,9,10}
mencari 5 dari index ke-4, index dari angka 0
Loop1:
brarti Tengah = (index awal + index akhir) / 2
(0+9) /2= 4
Index 4 = 5 brarti data langsung ditemukan.
contoh lagi:
Mencari 3 dari index ke-2, index dari angka 0
Loop1:
berarti, Tengah = (Index awal + Index Akhir) / 2
(0+9) / 2 = 4
index 4 = 5 brarti 5 itu lebih dari data yang kita cari yaitu 3
index 4 = 5 > 3 data belum ditemukan, berarti
Index awal = tengah - 1
4-1= 3
index 3 = 4 brarti data masih belum kita temukan, 4 itu lebih dari data yg kita cari
Loop 2:
berarti,
index 3= 4 > 3 data belum ditemukan
index awal= tengah - 1
3 - 1 = 2
index 2= 3 brarti data sudah ditemukan, maka pencarian Berhenti di Loop 2
NB: Jika > maka dikurangi (-) , Jika < maka di tambah (+)
mudah dipahami kan penjelasannya, hehe
Nah berikut Code binary search C++ yang akan saya bagikan..
Kode yang saya buat ini Index sudah saya urutkan ya....
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
//binary search untuk data yang sudah di tentukan dan diurutkan oleh Mkirom dan Ascending
int x[50] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50}; // untuk proses ascending
int z,i;
for (i=0;i<50;i++){
cout<<x[i]<<",";
}
cout<<endl;
cout<<"masukan data yang dicari : ";
cin>>z;
int awal=0, akhir=50, tengah;
while (awal <= akhir){
tengah = (awal + akhir)/2;
if (z > x[tengah] ){ // descending ubah tanda > menjadi <
awal = tengah + 1; }
else if (z < x[tengah]){ // descending ubah tanda < menjadi >
akhir= tengah - 1;}
else {
awal = akhir + 1;
}
}
if (z == x[tengah]){
cout<<" Data ditemukan, Ke- "<<tengah + 1<<endl;
}
else {
cout<<"Data tidak ditemukan "<<endl;
}
getch();
return 0;
}
Baca Juga :Tutorial Digital Works