Senin, 17 Maret 2014

Contoh program binary search dalam C++

Binary search, atau metode pencarian secara biner hanya bisa dilakukan jika data sudah terurut. Keunggulan dari proses binary search ini adalah sistem pencariannya yang relatif cepat dan efisien walaupun ada banyak data sekalipun. Karena data dicari dari depan, tengah dan belakang. Tetapi sintaks dan algoritmanya sedikit lebih rumit, karena kita harus mengurutkan data terlebih dahulu. Pengurutan data disini bisa kalian lakukan dengan metode ascending ataupun descending. Untuk dasar dari binary search ini, saya akan memberikan array dengan data yang telah diurut sebelumnya. Agar lebih mudah memahami dasar dari binary search ini. Adapun algoritma dari binary search ini adalah sebagai berikut. Membaca data yang ada di array Jika data belum terurut, maka lakukan pengurutan data Menentukan data yang akan dicari di dalam array Menentukan nilai elemen tengah array Jika nilai elemen tengah array sama dengan data yang dicari, maka pencarian akan dihentikan Jika elemen tengah tidak sama dengan data yang dicari, maka: Jika nilai tengah lebih besar dari nilai yang dicari, maka pencarian hanya dilakukan pada setengah array pertama Jika nilai tengah lebih kecil dari nilai yang dicari, maka pencarian hanya dilakukan pada setengah array sisa. Contoh program binary search dalam C++ dapat kalian lihat dibawah ini:
#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;
}


Semoga bermanfaat

2 komentar:

  1. Rebat FBS TERBESAR – Dapatkan pengembalian rebat atau komisi
    hingga 70% dari setiap transaksi yang anda lakukan baik loss maupun
    profit,bergabung sekarang juga dengan kami
    trading forex fbsasian.com
    -----------------
    Kelebihan Broker Forex FBS
    1. FBS MEMBERIKAN BONUS DEPOSIT HINGGA 100% SETIAP DEPOSIT ANDA
    2. FBS MEMBERIKAN BONUS 5 USD HADIAH PEMBUKAAN AKUN
    3. SPREAD FBS 0 UNTUK AKUN ZERO SPREAD
    4. GARANSI KEHILANGAN DANA DEPOSIT HINGGA 100%
    5. DEPOSIT DAN PENARIKAN DANA MELALUI BANL LOKAL
    Indonesia dan banyak lagi yang lainya
    Buka akun anda di fbsasian.com
    -----------------
    Jika membutuhkan bantuan hubungi kami melalui :
    Tlp : 085364558922
    BBM : fbs2009

    BalasHapus