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?
Răspunsuri la întrebare
Răspuns de
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;
}
#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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă