Sunteți pe pagina 1din 7

Capitolul I Istoric Istoria sort rii este strns legat de multe premiere din domeniul calculatoarelor: primele ma ini

de prelucrat a datelor, primele programe memorate, primul software, primele metode de utilizare a zonelor tampon de I/E, primele lucr ri asupra analizei algoritmilor i asupra complexit ii acestora. Astfel, originea metodelor actuale de sortare ne conduce n secolul al XIX-lea, cnd au fost inventate primele ma ini de sortat, n Statele Unite, cu ocazia recens mntului din 1880, cnd Herman Hollerith, angajat al Biroului de Recens mnt, a inventat o ma in electric de tabelat (cu cartele), pentru a r spunde necesit ilor de prelucrare statistic . n 1901, acela i Herman Hollerith a inventat o ma in mai modern , care sorta automat. Ma ina de sortat a lui Hollerith se baza pe metodele de sortare dup ranguri, folosite i n prezent. Ideea interclas rii a fost folosit cu succes la o alt masin cu cartele, numit collator", n 1938, care putea s interclaseze dou pachete de cartele ntr-unul singul, printr-o singur trecere. Primul program scris pentru un calculator cu program memorat a fost o rutin de sortare. Astfel, John von Neumann a preg tit programe de sortare intern , n 1945, pentru a testa valabilitatea unor coduri de intructiuni propuse de el pentru calculatorul EDVAC. n anul 1946, Jonh Mauchly, la sesiunea special asupra calculatoarelor tinut la Moore School, a conferentiat despre Sortare i Fuziune, aceasta fiind, de altfel, prima discutie public despre sortarea pe calculator. Prima metod de sortare folosea num rarea compara iilor; apoi urmau o serie de treceri de interclasare echilibrat cu dou c i. n 1952, Daniel Goldenberg a codificat 5 metode diferite de sortare: interclasarea direct cu dou c i, sortare cu baz 2, selectie direct , metoda bulelor. n 1959, Donald L. Shell a propus sortarea prin mic orarea incrementului; sortarea cu interclasare i interschimb a fost descoperit de K. E. Batcher n 1964; C. A. R. Hoare a descoperit metoda sort rii rapide; n 1964 a fost descoperit sortarea de ansamble de c tre J. W. J. Williams. Pe parcursul anilor s-au mbun t tit aceste metode de sortare i s-au descoperit i metode noi, metode hibride.

Sortarea prezentare general Sortarea este o opera ie fundamental n informatic (multe programe o folosesc ca pas intermediar) i, ca urmare, a fost dezvoltat un num r mare de algoritmi de sortare. Problema sort rii se poate defini astfel: Date de intrare: un ir de numere (v1 ,v2 ,...,vn);
' Date de ie ire: o permutare (reordonare) a irului ini ial, (v 1 , v 2 , ...., v 'n ) asfet nct ' v 1 e v 2 e .... e v 'n .

'

'

Fiind dat un ir de intrare, ca, de exemplu (31, 41, 59, 26, 41, 58), un algoritm de sortare returneaz , la ie ire, irul (26, 31, 41, 41, 58, 59). Un ir de intrare ca cel de mai sus se nume te o instan a problemei de sortare. n general, prin instan a unei probleme se va in elege mul imea tuturor datelor de intare (care satisface restic iile impuse n definirea problemei) necesare pentru a determina o solu ie a problemei. Exist mai multe metode de sortare, ncepnd de la cele mai simple, pn la cele complexe: - simple : sortarea prin metoda bulelor, selec ia direct , inser ia direct , sortarea prin num rarea compara iilor; - complexe : sortarea rapid , sortarea prin interclasare dar i soratrea cu ansamble. Analiznd complexitatea algoritmilor factorul cel mai important este timpul de execu ie. Se folosesc mai multe criterii pentru evaluarea timpului de executie al algoritmilor de sortare, cum ar fi: num rul de pa i ai algoritmului i num rul de comopara ii dintre chei, necesare pentru a sorta N elemente. Se mai define te i ordinea de magnitudine (notat cu O), care ne permite s compar m algoritmii f r referire la factori. Un algoritm de O(N) se spune c se execut n timp linear, iar, de exemplu, accesarea unui nod frunz ntr-un arbore binar de c utare necesit O(log2N) timp. Metodele simple de sortare au, de obicei, ordinea de magnitudine sorta N elemente ntr-un timp proportional cu num r relatiiv redus de elemente, de pn la 500. Metodele complexe de sortare pot sorta N elemente ntr-un timp proportional cu NlogN. Nici un algoritm nu poate folosi mai putin de NlogN comparatii ntre chei. Sunt eficiente mai ales pentru sortarea unui num r mare de elemente. Necesit mai mult timp pentru programare dar sunt mai eficiente. Unul dintre cei mai populari algoritmi de sortare cu scop general este Quicksort numit si sortarea rapid , care necesit O(NlogN) timp n 2 , adic pot

i sunt eficiente pentru sortarea unui

caz general (mediu), lucreaz bine pentru cele mai multe aplicatii chiar dac , n caz nefavorabil, necesit timp. Tehnica divide et impera a fost aplicat problemelor de sortare n mai multe feluri rezultnd astfel algoritmii: Mergesort, Quicksort, Heapsort, ce sunt mult mai eficien i dect cei simpli. Heapsort si Mergesort au nevoie de O(NlogN) timp n caz nefavorabil, de i, n caz general, comportarea lor nu este chiar a a de bun ca la Quicksort. Exist metode care folosesc propriet tite digitale ale cheilor ca s ob in timp de execu ie propor ional cu N (Radixsort). Al doilea factor important n analiza complexit ii algorotmilor l reprezint cantitatea (volumul) de memorie suplimentar trei tipuri: metode care sorteaz pe loc, nu folosesc memorie suplimentar , ci, uneori doar o mic tabel sau stiv ; metode care au o reprezentare de list nl n uit , deci folosesc N cuvinte de memorie n plus pentru pointerii listei; metode care au nevoie de memorie suplimentar pentru o copie a tabelei ini iale. O caracteristic important n practic a algoritmilor de sortare o reprezint stabilitatea. O metod de sortare este stabil dac p streaz ordinea relativ a cheilor n tabel . (Dac sort m un ir de nume, numele cu aceea i liter de nceput sunt sortate n ordine alfabetic ). Majoritatea metodelor simple sunt stabile, dar mul i dintre algoritmii sofistica i, nu. (Pentru mbun t ire, se poate ad uga un index pentru fiecare cheie) Aplicatii ale sort rii:
y y

folosit

de un algoritm de sortare.

Metodele de sortare, din punct de vedere al cantit ii de memorie disponibile se mpart n

n c utare: o c utare binar se execut n O(logN) timp dac cheile sunt sortate; Perechi apropiate: fiind dat un set de N numere, cum g sim perechea de numere care au cea mai mic diferen dintre ele. Dup sortare, sunt unul lng altul i atunci problema este rezolvat n O(NlogN) timp incluznd i sortarea;

Unicitatea elementelor: ca s afl m dac sunt elemente duplicate n irul de N elemente, sort m irul i este mai u or de aflat;

y y

Frecventa distributiei; Selectarea: ca s afl m care este a k-a cel mai mare element din ir, nti sort m irul i atunci elementul va fi pe pozi ia k;

"Convex hulls": avem N pointeri n dou dimensiuni, care este poligonul celui mai mici suprafe e care con ine pe to i.

Capitolul II Tehnici de sortare. Algoritmi de sortare. Un algoritm este orice procedur de calcul bine definit care prime te o anumit valoare sau o mul ime de valori ca date de intrare i produce o anumit valoare sau mul ime de valori ca date de ie ire. Astfel, un algoritm este un ir de pa i care transform datele de intrare n date de ie ire . Putem, de asemenea, s privim un algoritm ca pe un instrument de rezolvare a problemelor de calcul bine definite. Enun ul problemei specific , n termeni generali, rela ia dorit intrare / ie ire. Algoritmul descrie o anumit procedur de calcul pentru a se ajunge la aceast leg tur , intrare / ie ire. Reiter m definirea problemei sort rii, dup cum urmeaz : Date de intrare: un ir de numere (v1 ,v2 ,...,vn);
' Date de ie ire: o permutare (reordonare) a irului ini ial, (v 1 , v 2 , ...., v 'n ) asfet nct ' v 1 e v 2 e .... e v n .

'

Alegera unei anumite metode de sortare pentru o aplica ie dat depinde de:  num rul de obiecte care trebuie sortate;  gradul n care aceste obiecte sunt deja sortate, intr-un anumit fel;  tipul electronic care urmeaz s fie folosit: memoria principal , discuri sau benzi magnetice. Este de remarcat c fiecare metod are propriile sale avantaje i dezavantaje, astfel c nu poate fi definit cel mai bun mod de sortare, ntruct exist mai multe metode optime, n func ie de ceea ce trebuie sortat, la ce ma in i n ce scop. n vederea alegerii celei mai optime metode de sortare pentru rezolvarea unei probleme particulare, trebuie cunoscute caracteristicile fiec rei metode de sortare. Sortarea poate fi:  intern ;  extern . Sortarea intern este atunci cnd num rul de nregistr ri ce trebuie sortate este suficient de mic pentru ca ntregul proces s se desf oare n memoria de mare vitez a calculatorului.

Sortarea extern

este atunci cnd num rul nregistr rilor ce trebuie sortate

dep e te ceea ce poate re ine calculatorul n memoria sa intern de mare vitez . Sortarea extern se deosebe te mult de sortarea intern , chiar dac n ambele cazuri problema care se pune este s se sorteze n ordine cresc toare un fi ier dat, pentru c accesul eficient la spa iul de stocare a fi ierelor externe este supus unor restric ii severe. Structurile de date trebuie aranjate n a a fel nct dispozitivele periferice de memorie (benzi, discuri, tambururi), relativ lente, s fac fa inutile pentru sortarea extern aspectele. Exist o multitudine de algorit mi de sortare, grupa i, n general, dup anumite caracteristici, n familii de metode. Cele mai uzuale sunt: 1) Sortarea prin interschimbare: dac dou elemente al turate vor fi g site necorespunz toare ordon rii cerute, vor fi interschimbate. Acest proces se repet pn cnd nu mai sunt necesare interschimb ri; 2) Sortarea prin num rare: fiecare element este comparat cu toate celelalte. Num rnd cte vor fi mai mici, se g se te pozi ia final a elementului ini ial; 3) Sortarea prin inser ie: elementele sunt tratate separat fiecare nou element este inserat n locul corespunz tor, n raport cu elementele sortate anterior; 4) Sortarea prin interclasare: presupune mp r irea vectorului n subvectori, ordonarea acestora i interclasarea rezultatelor; 5) Sortarea prin selec ie: la nceput se g se te elementul cel mai mic (sau cel mai mare), care este separat de rest, apoi este g sit cel mai mic (sau cel mai mare) din cele r mase, .a.m.d.; 6) Sortarea prin distribuire: se separ vectorul n secven e dup ultima cifr , fiecare secven se imparte in subsecven e dup penultima cifr , .a.m.d. cerin elor algoritmului de sortare. n consecin , cele reconsider m chestiunea sub toate mai multe tehnnici de sortare intern (inserarea, interschimbul, selectarea) sunt practic i este nevoie s

PN AICI 6

1) Sortarea prin interschimbare Familia de algoritmi de sortare prin interschimbare , numit i a metodelor de interschimbare sau transpozi ie , presupune, n principal , interschimbul sistematic al perechilor de elemente care nu sunt n ordinea dorita , pn cnd nu mai exist astfel de perechi. Dintre aceste metode patru sunt mai uzuale , i anume: 1. sortarea cu interschimbare i selec ie (metoda bulelor); 2. sortarea rapida a lui Hoare (quick - sort); 3. sortarea cu interclasare i interschimbare (sortarea paralel Botchev); 4. sortarea dup ranguri cu intershimbare.

S-ar putea să vă placă și