Dalam mencari data, larik dibagi menjadi dua, dan pada larik
yang terurut menurun, jika data yang dicari lebih kecil dari data tengah, maka
pencarian dilanjutkan ke arah kiri, dan sebaliknya. Data yang disimpan dalam
larik harus sudah terurut. Dalam proses pencarian, kita memerlukan 2 buah
indeks larik, yaitu indeks terkecil dan terbesar.
Contoh program pascal-nya (untuk menentukan letak angka yang
dicari):
program BagiDua;
uses crt; (*untuk mengaktifkan kerja clrscr dan readkey*)
var i,x,j,k,n,idx
: integer; (*var= deklarasi variabel, x=angka yang akan dicari letaknya dalam
larik, n=jumlah elemen larik, i= indeks kiri larik, j=indeks kanan larik , idx=
posisi angka pada elemen ke berapa, integer=bilangan bulat, k=indeks elemen tengah *)
ketemu : boolean; (*untuk
menentukan apakah x ditemukan*)
L: array[1..100] of integer; (*array merupakan deretan suatu variabel
yang bertipe data sama*)
write ('berapa jumlah data? '); readln (n);
i:=1; (*inisiasi
nilai i=1 *)
for i:=1 to n do
write ('data ke-',i,'
= '); readln (L[i]);
j:=n; (*nilai ujung
kanan larik = n *)
ketemu := false; (*asumsikan x belum ditemukan*)
write ('masukkan angka
yang dicari: '); readln(x);
while (not ketemu) and (i<=j) do
begin
k:= (i+j) div 2; (*bagidua larik A pada
posisi k*)
if (L[k] = x) then
ketemu := true
else
if (L[k] > x) then (*lakukan pencarian pada larik bagian
kanan*)
i := k+1 (*set indeks ujung kiri
larik yang baru*)
else (*lakukan pencarian pada larik
bagian kiri*)
j := k-1; (*set indeks ujung kanan larik yang
baru*)
end;
if (ketemu) then (* x ditemukan*)
idx:= k
else (* x tidak ditemukan
di dalam larik*)
idx := -1;
write ('angka ',x,' berada di urutan ke-',idx);
readln;
end.