Documente Academic
Documente Profesional
Documente Cultură
Cautare binara
Căutarea binară se bazează pe tehnica de programare Divide et Impera.
Elementul căutat este „verificat” cu mijlocul vectorului. Dacă elementul este
egal cu elementul din mijloc, căutarea se termină. Însă dacă nu sunt egale, se
compară valoarea elementului din mijloc cu cea a elementului de căutat. Dacă
elementul este mai mare se continua căutarea de la mijlocul listei până la sfârșit,
iar dacă este mai mic se continuă căutarea de la început până la mijloc.
#include <iostream>
using namespace std;
int main()
{
int mij,n=7,i,x=10,v[7]={4,5,8,10,20,45,76},st,dr,gasit=0;
st=0;
dr=n-1;
mij=(st+dr)/2;
while ( (st<=dr) && (!gasit) )
{
if (v[mij]==x) gasit=1;
else if (v[mij]<x) st=mij+1;
else dr=mij-1;
mij=(st+dr)/2;
}
if (gasit) cout<<x<<" se afla in vector pe pozitia "<<mij;
else cout<<x<<" nu se afla in vector";
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int mij,n=7,i,x=7,v[7]={4,5,8,10,20,45,76},st,dr,gasit=0;
st=0;
dr=n-1;
mij=(st+dr)/2;
while ( (st<=dr) && (!gasit) )
{ cout<<"il caut pe "<<x<<" de la poz "<<st<<" la poz "<<dr<<" ";
cout<<" mijlocul intervalului este poz "<<mij<<" si aici ";
if (v[mij]==x) {gasit=1;cout<<"il gasesc"<<endl;}
else { cout<<"nu-l gasesc"<<endl;
if (v[mij]<x) st=mij+1;
else dr=mij-1;}
mij=(st+dr)/2;
}
if (gasit) cout<<x<<" se afla in vector pe pozitia "<<mij;
else cout<<x<<" nu se afla in vector";
return 0;
}
Interclasarea a doi vectori
Fiind dați doi vectori sortați, prin interclasarea lor se înțelege construirea unui al
treilea vector sortat care să conțină toate elementele acestora.
În continuare, vom considera că vrem să interclasăm vectorii a, de lungime m, și
b, de lungime n, formând un vector c, de lungime p. Toți vectorii vor fi indexați
de la 0.
Exemplu
a=⟨1,4,5,5,7,9⟩ b=⟨2,3,5,6,7⟩ rezulta c=⟨1,2,3,4,5,5,5,6,7,7,9⟩