Proses pencarian data dengan algoritma binary search dilakukan dengan mengurutkan data terlebih dahulu. Pencarian Biner adalah pencarian data secara eliminasi biner dan berulang/terus-menerus. Artinya adalah pada saat pencarian data, 1 kelompok data yang sudah berurutan dibagi menjadi 2 subkelompok. Kemudian salah satu subkelompok dieliminasi, sehingga ruang lingkup pencarian data menjadi lebih sedikit.
Subkelompok yang tersisa dibagi lagi menjadi 2 subkelompok, demikian dilakukan secara berulang-ulang. Cocok digunakan untuk mencari data dalam jumlah yang besar karena beban komputasinya kecil.
Algoritma Pencarian Data Dengan Binary
- Cari posisi atau indeks data tengah dengan rumus: (posisi awal + posisi akhir) div 2
- Bandingkan data yang dicari dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar?
- Jika data cari lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1
- Jika data cari lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1
- Ulangi proses pencarian hingga selesai Jika data sama, berarti data ditemukan. Jika tidak, berarti data tidak ditemukan.
Contoh :
Diketahui data :
1 2 3 4 5 6 7 8 9 (Posisi)
[ 21, 25, 28, 33, 38, 39, 48, 49, 69]
Carilah data 28?
1. Awal =1, akhir=9
Posisi = (awal+ akhir) div 2 = (1 + 9) div 2 = 5
Data[5]=28? Tidak
Data[5]<28 br="" tidak=""> Data[5]>28? Ya, akhir=posisi - 1 = 4,awal =1
2. Posisi = (awal+ akhir) div 2 = (1 + 4) div 2 = 2
Data[2]=28? Tidak
Data[2]<28 3="" akhir="4<br" awal="posisi" ya.="">3. Posisi = (awal+ akhir) div 2 = (3 + 4 ) div 2 = 3
Data[3]=28? Ya. Data ditemukan
Contoh Program pencarian binary berikut , tidak menggunakan prosedur dan fungsi. Source code program lengkapnya adalah sebagai berikut :
program Binary_Search;
uses crt;
Var
data : array [1..50] of integer;
i,j,n,x, kiri,tengah,kanan,cari :integer;
ketemu :boolean;
ulang : char;
Begin
clrscr;
randomize;
ulang :='y';
write('Tentukannya banyaknya data (Maks 50) = ');
readln(x);
write('Data input = ');
for i := 1 to x do
Begin
data[i]:=random(50);
write(' ',data[i],' ');
End; writeln;
while ulang='y' do
Begin
{Urutkan data}
for i:=1 to x do
for j:=1 to x do
Begin
if data[i] Begin
n:=data[i];
data[i]:=data[j];
data[j]:=n;
ENd;
End;
{Cetak Data}
write('Data Sorting = ');
for i:=1 to x do
write(' ',data[i],' ');writeln;
writeln;
write('Masukan data yang dicari (dgn Binary Serach) : ');
readln(cari);
kiri:=x;
kanan:=1;
ketemu:=false;
while not(ketemu) do
begin
tengah:=(kiri + kanan) div 2;
If data[tengah]=cari then
begin
ketemu:=true;
writeln('Data ditemukan pada index ke ',tengah);
end
else if (cari < data[tengah]) then
kiri := tengah - 1
else kanan:= tengah+1;
if (kanan > kiri) then
begin
ketemu:=true;
writeln('Data tidak ditemukan !');
end;
End;writeln;
write('Ulangi (y/t)?? ');readln(ulang);writeln;
End;
end.
Output Program :28>28>
Demikian Contoh program pencarian data dengan metode binary. Program di atas dapat disederhanakan dengan menggunakan Fungsi dan prosedur berupa sub program. Semoga bermanfaat.
God bless you all.
Tidak ada komentar:
Posting Komentar
Silakan memberikan komentar dan pertanyaan yang sifatnya positif.