Sunteți pe pagina 1din 1

Cautarea binara in C++

Se aplica doar pe vectori sortati

Fie v un vector sortat crescator si x valoarea cautata.

Pas1. Se determina mijlocul. Daca valoare cautata=cu val de pe mijloc, se afiseaza mesaj,
si treci la pas3

Pas2. Daca val cautata<val de pe mijloc caut in prima jumatate, altfel caut in a doua
jumatate. Algoritmul se termina cand valoarea a fost gasita sau li>lf(limita inferioara>limita
superioara)

Pas3. Parareste alg.

#include<iostream.h>
int v[25];
int i,n,li,ls,mij,gasit,x;
void main()
{
cout<<„n=”;
cin>>n;
cout<<„Cauta elementul =”;
cin>>x;
for(i=1;i<=n;i++)
{cout<<„v[„<<i<<„]=”; cin>>v[i];}
for(i=1;i<=n;i++)
cout<<v[i]<<” „;
cout<<endl;
li=1; //limita inferioara
ls=n; //limita superioara
gasit=0;
 
// Cautarea binara are loc numai in cazul in care tabloul este ordonat crescator
while((li<=ls)&&(!gasit))
{
mij=floor((li+ls)/2); //aflam indicele care reprezinta mijlocul tabloului.
if(x==v[mij])
{cout<<„L-am gasit pe pozitia „<<mij;
gasit=1;}
else if(x>v[mij]) // Cautare se face in dreapta
li=mij+1; // Actualizare li
else ls=mij-1; // Cautarea se face in stanga
}
if(gasit==0)
cout<<x<<„Elementul cautat nu se gaseste in tablou”;
}

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