Sunteți pe pagina 1din 4

Căutarea binară

Dacă elementele vectorului sunt ordonate crescător, putem să ne dăm


seama dacă elementul nu există în vector fără a fi nevoie să parcurgem
toate elementele vectorului. Unul dintre algoritmii folosiţi în acest caz
este algoritmul de cautare binară. Acest algoritm are la bază principiul
înjumătăţirii repetate a domeniului în care se caută elementul, prin
împarţirea vectorului în doi subvectori. Notăm cu St primul indice al
vectorului şi cu Dr ultimul indice al vectorului, iar m este indicele
elementului din mijloc al vectorului m=(st+dr)/2. Se compară valoarea
căutată cu valoarea elementului din mijloc. Dacă cele două valori sunt
egale înseamnă că s-a găsit elementul. Dacă nu sunt egale vectorul v-a fi
împarţit în doi subvectori. Operaţia de căutare constă în identificarea
subvectorului în care se poate găsi elementul, prin compararea valorii
căutate cu cea din mijloc, după care se divizează acest subvector în doi
subvectori ş.a.m.d. până când se găseşte elementul, sau până când nu se
mai poate face împarţirea în subvectori, ceea ce înseamnă că nu s-a găsit
elementul.
Exemplu: Dorim să căutăm elementul x=19 într-un vector cu 9 elemente:
5 8 11 15 17 19 20 23 26
1 2 3 4 5 6 7 8 9

St Dr
m
St=1 Dr=9

m=[(St+Dr) / 2 ]=[(1+9)/2] m=5


Elementul căutat este x=19
19>17 se caută în subvectorul din
dreapta st=m+1=6
19 20 23 26
6 7 8 9
St Dr
m
St=6 Dr=9
m=[(6+9) / 2]=7

19<20 se caută în subvectorul din stânga dr=m-1=6

m= [(6+6) / 2]=6

Elementul căutat se află pe poziţia m


Algoritmul se incheie
Algoritm descris în pseudocod
Funcţia CautBin(n,A,x)
st←1 dr←n
cât timp st≤dr execută
m ← [(st+dr)/2]
dacă x=A[m] atunci
CautBin ← m st ← dr+1
altfel
dacă x<A[m] atunci
dr ← m-1
altfel
st ← m+1
sfdacă
sfdacă
sfcât timp
sfCautBin
 

S-ar putea să vă placă și