
Pencarian bagi dua adalah metode pencarian data berdasarkan kelompok bagian
mana yang memungkinkan nilai datanya mendekati data yang dicari. Metode
pencarian ini hanya dapat dilakukan pada sekumpulan data yang sudah terurut
saja. Berikut adalah contoh ilustrasinya :

Berikut adalah contoh pencarian bagi dua beserta penulisannya dalam bahasa
algoritmik dan beberapa bahasa pemograman :
1. Bahasa Algoritmik
{ Deklarasi variabel dan sekaligus memberi nilai pada myArray }
myArray : array[0..5] of integer = (0, 1, 2, 3, 4, 5)
kiri : integer
kanan : integer
tengah : integer
cari : boolean
masukan : integer
{ Memberi masukan ke dalam variabel kiri, kanan, tengah, dan cari }
kiri <- 0
kanan <- 0
tengah <- 0
cari <- false
{ Masukan data yang dicari }
input(masukan)
{ Proses pencarian bagi dua }
while ((cari = false) and (kanan ≥ kiri))
if (myArraytengah = masukan)
cari <- true
else if (myArraytengah > masukan)
kanan <- kanan-1
else
kiri <- kiri + 1
{ Keluaran hasil pencarian }
if (cari)
output('Data ketemu di indeks : ', tengah)
else
output('Data tidak ditemukan!')
2. Bahasa Pascal
program pencarianBagiDua;
{ Deklarasi variabel dan sekaligus memberi nilai pada myArray }
var
myArray : array[0..5] of integer = (0, 1, 2, 3, 4, 5);
kiri : integer;
kanan : integer;
tengah : integer;
cari : boolean;
masukan : integer;
begin
{ Memberi masukan ke dalam variabel kiri, kanan, tengah, dan cari }
kiri := 0;
kanan := length(myArray)-1;
tengah := 0;
cari := false;
{ Masukan data yang dicari }
write('Input data : ');
readln(masukan);
{ Proses pencarian bagi dua }
while ((cari = false) and (kanan >= kiri)) do
begin
tengah := (kanan + kiri) div 2;
if (myArray[tengah] = masukan) then
begin
cari := true;
end
else if (myArray[tengah] > masukan) then
begin
kanan := kanan-1;
end
else
begin
kiri := kiri + 1;
end;
end;
{ Keluaran hasil pencarian }
if (cari) then
begin
writeln('Data ketemu di indeks : ', tengah);
end
else
begin
writeln('Data tidak ditemukan!');
end;
end.
3. Bahasa C++
#include <iostream>
using namespace std;
int main()
{
// Deklarasi variabel dan sekaligus mengisi beberapa nilai
int myArray[6] = {0, 1, 2, 3, 4, 5};
int kiri = 0;
int kanan = sizeof(myArray)/sizeof(myArray[0])-1;
int tengah = 0;
bool cari = false;
int masukan;
// Masukan data yang dicari
cout << "Input data : ";
cin >> masukan;
// Proses pencarian bagi dua
while ((cari == false) && (kanan >= kiri))
{
tengah = (kanan + kiri) / 2;
if (myArray[tengah] == masukan)
{
cari = true;
} else if (myArray[tengah] > masukan)
{
kanan -= 1;
} else
{
kiri += 1;
}
}
// Keluaran hasil pencarian
if (cari)
{
cout << "Data ketemu di indeks : " << tengah << endl;
} else
{
cout << "Data tidak ditemukan!" << endl;
}
// Mengembalikan nilai
return 0;
}
4. Bahasa Java
import java.util.Scanner;
public class Main
{
public static void main(String[]args)
{
// Deklarasi variabel dan sekaligus mengisi beberapa nilai
int[] myArray = {0, 1, 2, 3, 4, 5};
int kiri = 0;
int kanan = myArray.length-1;
int tengah = 0;
boolean cari = false;
int masukan;
// Masukan data yang dicari
Scanner inputan = new Scanner(System.in);
System.out.print("Input data : ");
masukan = inputan.nextInt();
while ((cari == false) && (kanan >= kiri))
{
tengah = (kanan + kiri) / 2;
if (myArray[tengah] == masukan)
{
cari = true;
} else if (myArray[tengah] > masukan)
{
kanan -= 1;
} else
{
kiri += 1;
}
}
// Keluaran hasil pencarian
if (cari)
{
System.out.println("Data ketemu di indeks : " + (tengah));
} else
{
System.out.println("Data tidak ditemukan!");
}
}
}