Sunteți pe pagina 1din 2

CĂUTAREA UNUI ELEMENT ÎNTR-UN VECTOR

Se dau un vector v cu n elemente numere întregi și o valoare întreagă x. Să se


afișeze mesajul DA dacă x se găsește printre elemente vectorului și NU în caz
contrar.
Exemplu: n=6 v=(1,2,3,4,5,6) x=4 DA
x=9 NU

METODA 1. CĂUTAREA SECVENȚIALĂ


Varianta 1.
ok=0;
for(i=1;i<=n;i++)
if(v[i]==x) ok=1;

if(ok==1) cout<<”DA”;
else cout<<”NU”;

Varianta 2. (calculez câte elem sunt egale cu x în vectorul v)

ct=0;
for(i=1;i<=n;i++)
if(v[i]==x) ct++;

if(ct!=0) cout<<"DA";
else cout<<"NU";
}
METODA 2. CĂUTAREA BINARĂ

Se dau un vector v cu n elemente numere întregi ORDONATE și o valoare întreagă


x. Să se afișeze mesajul DA dacă x se găsește printre elemente vectorului și NU în
caz contrar.
Exemplu: n=6, x=4
V=(2, 4, 6, 7, 8, 20)

Se compară cu 6, 2,4.

Observație:
Se compară x cu elementul din mijloc. Dacă nu sunt egale, se verifică dacă
elementul căutat este mai mic sau mai mare decât cel din mijloc. Dacă x < v[mij],
se continua căutarea în bucata din stânga a vectorului, dacă este mai mare, se
continua căutarea în bucata din dreapta.

Vom folosi o variabilă st pentru a reține poziția capătului din stânga a bucății
de vector în care se face căutarea, respectiv cu dr capătul din dreapta. Variabila mij
reține poziția elementului din mijlocul bucății în care se face căutarea.

st=1; dr=n; //inițial, căutarea se face în tot vectorul


ok=0; // ok este 0 când nu am găsit elementul și 1 în caz contrat
while(st <= dr && ok==0)
{mij = (st+dr) / 2;
if(v[mij] == x) ok=1;
else if(x < v[mij]) dr = mij-1;
else st = mij+1;
}
if(ok==1) cout<<”Există”;
else cout<<”Nu există”;

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