270 likes | 1.08k Views
ALGORITMI DE SORTARE. De ce este nevoie să facem o ORDINE rapidă în “DEZORDINE” ?. Lumea reala si PROBLEMA SORTARII. Unele din cele mai importante aplicaţii ale sortării sunt :
E N D
ALGORITMI DE SORTARE De ce este nevoie să facem o ORDINE rapidă în “DEZORDINE” ?
Lumea reala si PROBLEMA SORTARII Unele din cele mai importante aplicaţii ale sortării sunt: • 1. Rezolvarea problemei de “punere împreună“, a unorarticolelor similare. Adică dându-se n (suficient de mare) articole într-o ordine aleatoare, din care multe au aceeaşi valoare, ne propunem să rearanjăm aceste articole astfel încât toate articolele cu valori egale să apară în poziţii consecutive; elementele pot fi aşezate crescător (a1 ≤ a2 ≤ a3 ≤ . . . ≤ an) sau descrescător (a1 ≥ a2 ≥ a3 ≥ . . . ≥ an).
Lumea reala si PROBLEMA SORTARII • 2. Căutarea unor informaţii în funcţie de nişte valori cheie. Sortarea este un mijloc ajutător pentru căutare, permiţând astfel ca ieşirile de la calculator să poată fi adaptate cerinţelor umane. • 3. O altă aplicaţie, mai clară, a sortării apare în cazul rutinelor de editare a fişierelor unde fiecare linie este identificată de un număr de cheie. În timp ce un utilizator tipăreşte adăugări şi modificări, nu este necesar să se păstreze întreg fişierul în memorie. Liniile pot fi modificate, apoi sortate (oricum ele sunt ordonate) şi după aceea comasate cu fişierul original. Aceasta permite o utilizare rezonabilă a eficienţei memoriei într-o situaţie ce presupune multiprogramarea. • Fabricanţii de calculatoare estimează că peste 25% din timpul de rulare al calculatoarelor este ocupat de sortare, în condiţiile în care toţi clienţii sunt luaţi în considerare. Există multe instalaţii în care sortarea reclamă peste jumătate din timpul de calcul.
ALGORITMI DE SORTARE • Sortarea prin insertie directa - Metoda este folosită de jucătorii de bridge în sortarea cărţilor, când iau cărţile una câte una. • Sortarea prin interschimbari directe • Sortare prin metoda bulelor • Sortare prin interclasare • Sortare rapida
SORTAREA PRINMETODA BULELOR (BUBBLESORT ) MULTIME NESORTATA MULTIME SORTATA PRIN BUBBLESORT
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.
EXEMPLU • Fiecare pereche analizata este evidentiata printr-un chenar dublu, colorata gri in cazul in care elementele trebuie interschimbate. • Limita fiecarei etape de verificare este marcata prin linie dubla mai groasa.
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 beginaux:=a[i]; a[i]:=a[i+1]; a[i+1]:=aux; inv:=true end; until inv=false;
ANIMATIE BUBBLESORT Elementele alaturate se compara si daca nu sunt in ordinea dorita, se intershimba. 6 12 3 10 5 neterminata….!! s.a.m.d. Dupa prima parcurgere a vectorului, elementul maxim e asezat pe pozitia sa finala!!!
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. • Bubblesorteste 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.
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?
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 beginaux:=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
BIBLIOGRAFIE • http://dranaxum.files.wordpress.com/2007/11/studiu-asupra-timpilor-de-sortare.pdf • http://buffered.io/2008/08/14/sorting-algorithms-the-bubble-sort/ • http://hosok2.com/project/dataExpansion_1/Bubble_sort_animation.gif
Prof. Master Lenuta RAD Liceul Teoretic “Pavel Dan” Campia Turzii