TI POLITALA 2A ALPRO SEARCHING BINARY
Pencarian dengan Algoritma Binary Search
Pencarian bagidua atau pencarian biner adalah metode
pencarian yang diterapkan pada sekumpulan data yang sudah terurut (terurut
menaik atau terurut menurun). Data yang terurut syarat mutlak penerapan
algoritma ini. Salah satu keuntungan data terurut adalah memudahkan pencarian,
dalam hal ini pencarian bagidua.
Misalkan indeks kiri adalah Ia
dan indeks kanan adalah Ib. Kondisi awal Ia=1 dan Ib = N.
Langkah 1. Bagi dua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indeks k = (Ia+Ib) div 2
(elemen tengah , L[k], membagi larik menjadi dua bagian, yaitu bagian kiri L[Ia..k-1] dan bagian kanan L[K+1..Ib])
Langkah 1. Bagi dua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indeks k = (Ia+Ib) div 2
(elemen tengah , L[k], membagi larik menjadi dua bagian, yaitu bagian kiri L[Ia..k-1] dan bagian kanan L[K+1..Ib])
Langkah 2. Periksa apakah L[k] =
X.
Jika L[k] = X, pencarian dihentikan sebab X sudah ditemukan. Tetapi, jika L[k] ≠ X, harus ditentukan apakah pencarian akan dilakukan di larik bagian kiri atau di bagian kanan. Jika L[k] < X, maka pencarian dilakukan pada bagian kiri. Sebaliknya, jika L[k] > X, pencarian dilakukan pada larik bagian kanan.
Langkah 3. Ulangi langkah 1 sampai X ditemukan atau Ia > Ib (ukuran larik sudah no
Jika L[k] = X, pencarian dihentikan sebab X sudah ditemukan. Tetapi, jika L[k] ≠ X, harus ditentukan apakah pencarian akan dilakukan di larik bagian kiri atau di bagian kanan. Jika L[k] < X, maka pencarian dilakukan pada bagian kiri. Sebaliknya, jika L[k] > X, pencarian dilakukan pada larik bagian kanan.
Langkah 3. Ulangi langkah 1 sampai X ditemukan atau Ia > Ib (ukuran larik sudah no
Pencarian bagidua atau pencarian biner adalah metode
pencarian yang diterapkan pada sekumpulan data yang sudah terurut (terurut
menaik atau terurut menurun). Data yang terurut syarat mutlak penerapan
algoritma ini. Salah satu keuntungan data terurut adalah memudahkan pencarian,
dalam hal ini pencarian bagidua.
Misalkan indeks kiri adalah Ia
dan indeks kanan adalah Ib. Kondisi awal Ia=1 dan Ib = N.
Langkah 1. Bagi dua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indeks k = (Ia+Ib) div 2
(elemen tengah , L[k], membagi larik menjadi dua bagian, yaitu bagian kiri L[Ia..k-1] dan bagian kanan L[K+1..Ib])
Langkah 1. Bagi dua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indeks k = (Ia+Ib) div 2
(elemen tengah , L[k], membagi larik menjadi dua bagian, yaitu bagian kiri L[Ia..k-1] dan bagian kanan L[K+1..Ib])
Langkah 2. Periksa apakah L[k] =
X.
Jika L[k] = X, pencarian dihentikan sebab X sudah ditemukan. Tetapi, jika L[k] ≠ X, harus ditentukan apakah pencarian akan dilakukan di larik bagian kiri atau di bagian kanan. Jika L[k] < X, maka pencarian dilakukan pada bagian kiri. Sebaliknya, jika L[k] > X, pencarian dilakukan pada larik bagian kanan.
Langkah 3. Ulangi langkah 1 sampai X ditemukan atau Ia > Ib (ukuran larik sudah no
Jika L[k] = X, pencarian dihentikan sebab X sudah ditemukan. Tetapi, jika L[k] ≠ X, harus ditentukan apakah pencarian akan dilakukan di larik bagian kiri atau di bagian kanan. Jika L[k] < X, maka pencarian dilakukan pada bagian kiri. Sebaliknya, jika L[k] > X, pencarian dilakukan pada larik bagian kanan.
Langkah 3. Ulangi langkah 1 sampai X ditemukan atau Ia > Ib (ukuran larik sudah no
Contoh Program ;
#include <iostream>
using namespace std;
int main()
{
cout<<"======================================="<<endl;
cout<<"======PROGRAM BINARY
SEARCH C++ ========"<<endl;
cout<<"======================================="<<endl<<endl;
int n, nilai[10], awal, akhir, tengah, x,
i;
string nama[10];
cout<<"Masukkan jumlah data :
";cin>>n;
cout<<endl;
for (i=0; i<n; i++)
{
cout<<"Nama
ke-"<<i+1<<" : ";cin>>nama[i];
cout<<"Nilai : ";cin>>nilai[i];
cout<<endl;
}
cout<<"Masukkan nilai yang
dicari : ";cin>>x;
awal=0;
akhir=n-1;
do
{
tengah=(awal+akhir)/2;
if (x<nilai[tengah])
{
akhir=tengah-1;
}
else
{
awal=tengah+1;
}
}
while
((awal>=akhir)&&(nilai[tengah]!=x));
if (nilai[tengah]==x)
{
for (i=0; i<n; i++)
{
cout<<"Data
"<<x<<" berada pada posisi
ke-"<<tengah+1<<" dengan nama "<<nama[i];
}
}
else
{
cout<<"Data yang anda cari
tidak ditemukan";
}
}
|
Listing Program
Hasil Runing
Daftar Pustaka
https://sabitlabscode.wordpress.com/2014/03/10/pencarian-dengan-algoritma-binary-search/
Komentar
Posting Komentar