Căutarea binară se poate face atât iterativ cât și recursiv folosind Divide et Impera, pentru a determina dacă un număr există, sau pentru a determina poziția unui număr într-un vector sortat anterior. Ea are complexitate de timp și complexitate de spațiu . Evident un program complet ar citi cele numere, iar atunci complexitatea de timp ar deveni ().
Varianta cu while, care returnează poziția:
int cautarebinara(int n, int a[], int val) {
int st = 0, dr = n-1, mij;
while (st <= dr) {
mij = (st + dr) / 2;
if (a[mij] == val)
return mij;
else if (a[mij] <= val)
st = mij + 1;
else
dr = mij - 1;
}
return mij;
}Varianta cu Divide et Impera, care confirma prezenta
bool cb(int a[], int st, int dr, int val){
if(st == dr)
return a[st] == val;
int mij = (st + dr) / 2;
if(a[mij] == val)
return true;
if(a[mij] < val)
return cb(a, mij + 1, dr, val);
return cb(a, st, mij - 1, val);
}Ambele variante pot returna atât poziția cât și confirma prezența