Căutarea secvențială
A căuta într-un vector înseamnă a stabili dacă o anumită valoare există printre elemente și, eventual, pe ce poziție se află. Cea mai simplă și mai generală metodă de căutare este cea secvențială.
Căutarea secvențială (numită și căutare liniară) presupune parcurgerea vectorului element cu element și verificarea, la fiecare pas, dacă elementul curent este cel căutat.
Marele avantaj al căutării secvențiale este că funcționează pe orice vector, indiferent dacă elementele sunt ordonate sau nu. Practic, este metoda la care apelăm ori de câte ori nu avem un motiv întemeiat să folosim altceva.
Cum funcționează
Parcurgem vectorul cu o structură repetitivă și comparăm fiecare element cu valoarea căutată x. Dacă găsim o potrivire, afișăm poziția:
int n, v[1001], x;
// ...
for (int i = 0; i < n; i++)
if (v[i] == x)
cout << i << ' ';
Acest cod afișează toate pozițiile pe care apare valoarea x. Condiția din interiorul buclei poate fi adaptată la cerința problemei: în loc de egalitate am putea căuta, de exemplu, primul număr par, ultimul element negativ sau orice altă proprietate.
Căutarea primei apariții
De multe ori ne interesează doar dacă valoarea există și care este prima ei poziție. În acest caz putem opri căutarea imediat ce am găsit-o, folosind o variabilă care reține poziția (sau -1 dacă valoarea nu apare):
int poz = -1;
for (int i = 0; i < n && poz == -1; i++)
if (v[i] == x)
poz = i;
if (poz != -1)
cout << "Gasit pe pozitia " << poz;
else
cout << "Nu exista";
Oprirea căutării la prima potrivire ne scutește de parcurgerea inutilă a restului vectorului.
Observații
În cazul cel mai defavorabil (valoarea nu există sau se află la final), căutarea secvențială parcurge toate cele n elemente, deci are o complexitate de ordinul . Pentru vectori mari și ordonați există o metodă mult mai rapidă: căutarea binară.
Concluzii
Căutarea secvențială este metoda universală de regăsire a unei valori într-un vector: simplă, sigură și aplicabilă oricărui șir. Atunci când vectorul este ordonat, însă, putem profita de această proprietate pentru a căuta mult mai eficient, prin căutarea binară.