3. PRINCIPIUL METODEI
Ideea de baza a sortarii prin metoda bulelor este in a parcurge
tabloul de la stanga spre dreapta, fiind comparate elementele
alaturate a[ i ] si a[i+1]. Daca vor fi gasite 2 elemente neordonate
valorile lor vor fi interschimbate.
Parcurgerea tabloului de la stinga spre dreapta se va repeta atat
timp cat vor fi intalnite elemente neordonate.
Sortarea prin metoda bulelor se considera drept una din cele
mai putin eficiente metode de sortare dar cu un algoritm mai
putin complicat.
5. ALGORITM
nr_parc:=0; {variabila contor numara la a cata parcurgere a vectorului
suntem; parcurgerea vectorului se repeta pana cand la o parcurgere nu se
mai pot face interschimbari}
repeat
inv:=false;
nr_parc:=nr_parc+1;
for i:=1 to n-nr_parc do
if a[i]>a[i+1] then
begin
aux:=a[i];
a[i]:=a[i+1];
a[i+1]:=aux;
inv:=true
end;
until inv=false;
6. ANIMATIE BUBBLESORT
Elementele alaturate se compara si daca nu sunt in ordinea
dorita, se intershimba.
10 5 6 12 3
neterminata….!!
s.a.m.d.
Dupa prima parcurgere a vectorului, elementul maxim e asezat pe
pozitia sa finala!!!
7. COMPLEXITATEA ALGORITMULUI
Sortarea prin meteoda bulelor este o metoda de sortare simpla, eficienta
pentru un numar mic de elemente (mai putin de 15), dar nu pentru
tablouri mari.
Bubblesort este extrem de eficienta în ceea ce priveşte utilizarea
memoriei, datorită faptului că toate operaţiunile de triere sunt efectuate
pe multimea initiala de date.
Timpul de executie depinde de ordinea initiala a elementelor. Daca
tabloul este deja sortat e nevoie de un singur pas, adica N-1 comparari.
In cazul cel mai nefavorabil sunt necesare N ×(N-1)/2 comparari si N ×
(N-1)/2 interschimbari. Performanta algoritmului in caz general este mai
greu de analizat dar este asemanator cazului nefavorabil.
8. APLICATIE
In prima ora de Educatie
fizica a fiecarui an scolar,
profesorul trebuie sa-si
aseze elevii fiecarei clase in
ordine crescatoare dupa
inaltime. Cum ii sugerati sa
procedeze?
9. IMPLEMENTARE
var a:array[1..100] of integer;
x,n i,k:integer;
inv:boolean;
begin
write(‘dati numarul de elevi din clasa’); readln(n);
for i:=1 to n do
begin
write(‘inaltimea elevului ’, i);
readln(a[i]);
end;
nr_parc:=0;
repeat
inv:=false;
nr_parc:=nr_parc+1;
for i:=1 to n-nr_parc do
if a[i]>a[i+1] then
begin
aux:=a[i];
a[i]:=a[i+1];
a[i+1]:=aux;
inv:=true
end;
until inv=false;
write(‘elevii aranjati crescator dupa inaltime’);
for i:=1 to n do write(a[i], ‘ ‘);
end.
BUBBLE.EXE