Algoritmul de cautare binara Recapitulare Ce este tablou
Algoritmul de cautare binara
Recapitulare Ce este tablou unidimensional? Cum se declara? Cum se face referirea la elementele tabloului? Care sunt operatiile specifice cunoscute?
Caracteristici q Se aplica pe vectori ordonati ascendent sau descendent q are la bază metoda înjumătăţirii repetate a domeniului în care se caută elementul prin împărţirea vectorului în doi subvectori. q Vom nota: - s – indicele primului element din vector - d – indicele ultimului element din vector - m – indicele elementului din mijloc - x – valoarea cautata Se compara valoarea cautata cu valoarea elementului din mijloc. - daca sunt egale atunci inseamna ca s-a gasit elementul - daca nu sunt egale atunci se imparte vectorul in doi subvectori v[s]…v[m-1] si v[m+1]…v[d] si se identifica subvectorul in care se cauta elementul reluand procesul.
Exemplu Fie vectorul v: 7 0 21 1 45 64 80 2 3 4 s=0 d=4 m=(s+d)/2=2 v[m]=45 x=v[m] Nu x>v[m] Da Subvectorul in care se cauta este v[3]. . v[4] m=(s+d)/2=3 v[m]=64 x=v[m] Da => s-a gasit elementul cautat x=64
Implementarea algoritmului int i, n, x, s, d, m, gasit, a[10]; cout<<”n=”; cin>>n; cout<<”x=”; cin>>x; . . . // se creeaza vectorul s=0; d=n-1; gasit=0; while(s<=d && !gasit) //cat timp vectorul poate fi impartit in subvectori si nu s-a gasit inca elementul {m=(s+d)/2; if(a[m]==x) gasit=1; else //daca nu s-a gasit elementul se stabileste subvectorul in care se continua cautarea if(x<a[m]) dr=m-1; else s=m+1; } if(st>dr) cout<<”Nu s-a gasit elementul”; else cout<<”S-a gasit elementul pe pozitia”<<m+1;
- Slides: 5