Sunteți pe pagina 1din 1

Cautarea binara

E folosita cand elementele sunt ordonate, nu e mai eficient sa le ordonam noi si dupa sa
folosim cautarea binara, daca nu sunt ordonate mai bine folosim direct cautarea secventiala.

int main()
{
int n,v[1000],i,x,p,u,m;
bool gasit=false;
cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
cin>>x; //elementul pe care il cautam
p=1,u=n;//in variabilele p si u memoram inceputul si sfarsitul intervalului in care cautam
while(p<=u && !gasit)//repetam procesul pana pana u>p sau gasim elementul
{
m=(p+u)/2;//aflam jumatatea intervalului
if(v[m]==x)//in cazul in care v[m]==x am gasit elementul
{
gasit=true;//am gasit elementul
p=n;
}
else
if(v[m]<x)//daca x este mai mic decat v[m], p devine m, adica elementul
cautat se afla la stanga(este mai mare)
p=m+1;
else
u=m-1;//daca x este mai mare decat v[m], u devine m, adica elementul
cautat se afla la dreapta(este mai mic)
}
if(gasit==true)
cout<<"Gasit";
else
cout<<"NU";
return 0;
}

Complexitate 𝑶(𝐥𝐨𝐠 𝟐 𝒏)

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