Pencarian Data Dengan Metode Binery

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 :




 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.

No comments:

Post a Comment

Silakan memberikan komentar dan pertanyaan yang sifatnya positif.