Informatică, întrebare adresată de timuandrada, 9 ani în urmă

Ma poate ajuta cineva cu aceasta problema va rog; e urgent pentru ca este pentru teza.
Cautarea binara intr-un sir. Divide et Impera. Va rog!!!


blindseeker90: Vrei programul in C, pseudocod sau Pascal?
timuandrada: C++

Răspunsuri la întrebare

Răspuns de blindseeker90
2
Nu uita, pentru ca o cautare binara sa functioneze, sirul deja trebuie sa fie ordonat crescator. Iti va da mesaj atunci cand valoarea nu este in sir. Desi numerotez in vector de la zero, in sir indic pozitia considerand prima valoare ca fiind 1, deci in sirul 3 4 1 2 3, 1 este gasit pe pozitia 3
#include <iostream>
using namespace std;

int main(){
int sir[50];
int i,n,val,jos,sus,mij,gasit=-1;
cout<<"Introduceti nr termeni ai sirului: ";
cin>>n;
cout<<"Introduceti elementele sirului: ";
for(i=0;i<n;i++){
cin>>sir[i];
}
cout<<"Introduceti termenul de cautat: ";
cin>>val;
jos=0;
sus=n-1;
while(jos<=sus){
mij=(jos+sus)/2;
if(sir[mij]>val){
sus=mij-1;
}
else if(sir[mij]<val){
jos=mij+1;
}
else{
gasit=mij+1;
break;
}
}
if(gasit==-1){
cout<<"Valoarea "<<val<<" nu a fost gasita";
}
else{
cout<<"Valoarea "<<val<<"a fost gasita in sir pe pozitia: "<<gasit;
}
return 0;
}
Alte întrebări interesante