Berikut algoritma binary search serta penerapan di C++ :
/* Program : Binary Search
- Input seluruh data kedalam array
- Input data yang dicari
- Tentukan nilai kiri, kanan, dan tengah dengan rumus :
- Kiri sama dengan nol
- Kanan lebih kecil dari jumlah data
- Tengah sama dengan hasil kanan dikurangi hasil kiri dibagi dua.
- Jika elemen tengah tidak sama dengan data yang dicari, maka :
- Jika elemen tengah lebih besar dari data yang dicari, maka pencarian dilakukan pada setengah array pertama. Caranya dengan menggunakan perintah kiri sama dengan tengah ditambah satu.
- Jika elemen tengah lebih kecil dari data yang dicari, maka pencarian dilakukan pada setengah array berikutnya. Caranya dengan menggunakan perintah kanan sama dengan tengah dikurangi satu.
- Tengah sama dengan kiri ditambah (kanan - kiri) dibagi dua.
- Jika elemen tengah sama dengan data yang dicari, maka data ditemukan. Sedangkan jika elemen tengah tidak sama dengan data yang dicari, maka data tidak ditemukan.
Program
Karya : blog-sharings.blogspot.com */
#include <iostream.h>
#include <conio.h>
#include <string.h>
main ()
{
int jd,no,kiri,kanan,center;
char data[20][50],cari[20];
cout<<"\n\t\t *************************************** \n";
cout<<"\t\t | \t\t\t\t | \n";
cout<<"\t\t | \t Proses Pencarian \t | \n";
cout<<"\t\t | Menggunakan Algoritma Binary Search | \n";
cout<<"\t\t | \t\t\t\t | \n";
cout<<"\t\t *************************************** \n\n\n";
cout<<" Input Jumlah Data : ";
cin>>jd;
cout<<endl;
for (no=0;no<jd;no++)
{
cout<<" Input Data Ke-"<<(no+1)<<" : ";
cin>>data[no];
}
cout<<endl;
cout<<" Input Nilai Dicari : ";
cin>>cari;
kiri=0;
kanan=jd-1;
center=(kanan-kiri)/2;
while ((strcmp(data[center],cari)!=0) && (kiri>=0)&& (kanan<jd) && (kanan>=kiri))
{
if (strcmp (cari,data[center])>0)
{
kiri=center+1;
}
else if (strcmp (cari,data[center])<0)
{
kanan=center-1;
}
center=kiri+(kanan-kiri)/2;
}
cout<<endl;
if (strcmp(data[center],cari)==0)
{
cout<<" Keterangan : Data Ditemukan";
}
else
{
cout<<" Keterangan : Data Tidak Ditemukan";
}
getch();
}
0 komentar:
Posting Komentar
Tinggalkan Komentar Anda Untuk Memajukan Blog Ini