Documente Academic
Documente Profesional
Documente Cultură
Prin sortarea unui vector se înţelege aranjarea elementelor în ordine crescătoare sau
descrescătoare.
Rezolvare problemei
program metoda_interschimării_directe;
type vector=array[1..50] of integer;
var v:vector; aux:integer; i,n,j:byte;
begin
write('n= ');readln(n);
writeln('Intr. elem. in vector: ');
for i:=1 to n do begin
write('v[',i,']='); readln(v[i]);
end;
writeln('Vectorul initial este: ');
for i:=1 to n do write(v[i],' ');
writeln;
{algoritmul de interschimare, sortare crescatoare}
for i:=1 to n-1 do
for j:=i+1 to n do
if v[j]<v[i] then begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end;
writeln('Vectorul sortat crescator este: ');
for i:=1 to n do write(v[i],' ');
end.
Căutare binară
Fie un vector v cu n componente numere întregi SORTATE CRESCĂTOR, se pune
problema de a stabili dacă o valoare dată x se găseşte sau nu printre elementele vectorului.
Ideea de la care se porneşte este următoarea: căutarea se efectuează într-un interval
[li,ls], unde li este limita inferioară a intervalului, mai exact indicele primului element din
vector iar ls este limita superioară , mai exact indicele ultimului element din vector. La modul
general intervalul iniţial de căutare este [1,n].
În continuare procedăm astfel :
calculăm indicele componentei din mijloc :
k: = (li+ls ) div 2;
pot exista 3 situaţii :
o dacă v[k]=x atunci se afişează un mesaj corespunzător şi căutarea se încheie
cu succes
o dacă v[k]<x atunci se reiniţializează intervalul de căutare: li:= k+1 şi ls
o dc v[k]>x atunci intervalul de căutare va fi: li şi ls:=k-1
căutarea se încheie când x a fost găsit sau când li>ls . Când li>ls atunci înseamnă că x nu
se găseşte în vector.
Secvenţa de program :
li:= 1; ls:=n; gasit:=false;
repeat
k:=(li+ls) div 2;
if v[k]=x then
begin
writeln(x,’ gasit pe pozitia ’,k);
gasit:=true;
end
else
if v[k]<x then li:=k+1
else ls:=k-1;
until (li>ls) or gasit;
if li> ls then writeln(’Numarul cautat nu se gaseste in vector’);
end.
Exemplu :
n=7
x = 13
-1 3 5 6 9 13 18
li=1 ls=7
k=4 => v[k]=6 , 6 < 13 => li=5 si ls =7
k = 6 => v[k]=13 13 = 13 => Valoare gasita.