Metode de Sortare Word

Embed Size (px)

DESCRIPTION

Metode de Sortare Word

Citation preview

Raducan (Vrinceanu) LidiaFacultatea : Stiinte si MediuSpecializarea: Matematica-InformaticaAnul: 2

METODE DE SORTARE SI CAUTARE

Coordonator:Asist. Bocaneala Corina

PREZENTARE GENERAL In ultimii ani asistm la o dezvoltare n ritm accelerat a utilizrii calculatoarelor, numrul utilizatorilor se mreste simtitor. De aceea, prin aceast lucrare am vrut s-i ajutm pe cei dornici de a ntelege si de a nvta cei mai importanti algoritmi de sortare, deoarece ei constituie o disciplin fundamental n stiinta calculatoarelor. Deci scopul acestei lucrri este s prezinte ntr-o manier accesibil pentru utilizatorii tehnicii de calcul cteva metode de sortare cum ar fi:Bubblesort, Selection sort, Insertion sort, Rank sort si Shellsort, Quicksort, Mergesort, Heapsort.

Lucrarea de fat prezint pe scurt cele mai importante informatii despre principalele metode de sortare ncepnd de la cele mai simple pn la cele complexe : simple : Bubblesort, Selection sort, Insertion sort, Rank sort si Shellsort complexe : Quicksort, Mergesort, Heapsort, Radixsort

Metodele simple sunt ntotdeauna mai potrivite pentru un numr de elemente mai mici dect50. Tabelele aproape (sau deja) sortate, sau cele care contin un numr mare de chei egale, sunt relativ usor de sortat cu ajutorul algoritmilor simplii. Necesit relativ putin timp de programare si mentinere. Metodele complexe pot sortaNelemente ntr-un timp proportional cuNlogN. Nici un algoritm nu poate folosi mai putin deNlogNcomparatii ntre chei. Sunt eficiente mai ales pentru sortarea unui numr mare de elemente. Necesit mai mult timp pentru programare dar sunt mai eficiente.

CUPRINS

1. Notiuni teoretice

2. Metode de sortare2.1. Sortarea prin metoda bulelor2.2 . Sortarea prin metoda selectiei2.3. Sortarea prin metoda insertiei2.4. Sortarea prin enumerare2.5. Shellsort2.6. Sortarea prin interclasare2.7. Sortarea rapida2.8. Sortarea prin ansamblare3. Metode de cautare 3.1. Cautare secventiala 3.2. Cautare binara4. Concluzii5. Bibliografie 1.NOTIUNI TEORETICESortareaeste o metoda(un algoritm), prin intermediul careia se poate ordona o anumita clasa de obiecte concrete sau abstracte, dupa unul sau mai multe criterii impuse iar cautareaeste o metoda, prin intermediul careia, se poate cauta, dupa criterii precizate, pentru regasirea unui anumit obiect concret sau abstract intr-o multime ordonata sau nu, de obiecte concrete sau abstracte.Ca exemple se pot da:-sortarea (ordonarea) crescatoare sau descrescatoare a unui sir de numere reale si cautarea unui numar sau a mai multor numere in acest sir de numere.-sortarea unei liste de persoane in ordinea alfabetica a numelor si prenumelor acestora si cautarea unei persoane sau a mai multor persoane cu anumite caracteristici precizate.-ordonarea unei liste de persoane dupa importanta muncii lor si cautarea unor persoane dupa criterii precizate.-ordonarea unei liste de persoane dupa anumite criterii preferentiale si cautarea in aceasta lista. Divide et impera se bazeaz pe principiul descompunerii problemei n dou sau mai multe subprobleme (mai uoare), care se rezolv, iar soluia pentru problema iniial se obine combinnd soluiile subproblemelor. De multe ori, subproblemele sunt de acelai tip i pentru fiecare din ele se poate aplica aceeai tactic a descompunerii n (alte) subprobleme, pn cnd (n urma descompunerilor repetate) se ajunge la probleme care admit rezolvare imediat.Nu toate problemele pot fi rezolvate prin utilizarea acestei tehnici. Se poate afirma c numrul celor rezolvabile prin "divide et impera" este relativ mic, tocmai datorit cerinei ca problema s admit o descompunere repetat.Divide et impera este o tehnic ce admite o implementarerecursiv. Principiul general prin care se elaboreaz algoritmi recursivi este: "ce se ntmpl la un nivel, se ntmpl la orice nivel" (avnd grij s asigurm condiiile de terminare). Aadar, un algoritm prin divide et impera se elaboreaz astfel: la un anumit nivel avem dou posibiliti:1. s-a ajuns la o problem care admite o rezolvare imediat (condiia de terminare), caz n care se rezolv i se revine din apel;2. nu s-a ajuns n situaia de la punctul 1, caz n care problema curent este descompus n (dou sau mai multe) subprobleme.

2. METODE DE SORTARE

2.1. Sortarea prin metoda bulelor (Bublle sort) Cu toate c sortarea prin metoda bulelor reprezint una dintre cele mai cunoscute i mai utilizate metode de ordonare, eficiena acesteia este una foarte sczut. Astfel, algoritmul secvenial de sortare prin metoda bulelor are o complexitate de ordinul O(n2 ) datorit faptului c sunt comparate perechi ce sunt interschimbate n cazul n care criteriul de ordonare nu este ndeplinit. Dup o parcurgere integral a elementelor vectorului, procesul se reia ncepnd din nou cu primul element. Algoritmul mai este cunoscut sub denumirea de metoda bulelor datorit faptului c, la fiecare pas, elementele sunt deplasate ctre poziia corect n funcie de condiia de sortare. Dup fiecare iteraie, o parte dintre elementele vectorului (ncepnd de la cel de-al doilea din ultima pereche modificat) sunt deja ordonate. Algoritmul i ncheie execuia dup un numr de maxim n1 iteraii, atunci cnd, la o nou parcurgere, nu s-a mai produs nici o interschimbare. Datorit faptului c sunt comparate n ordine perechi de elemente adiacente, algoritmul de sortare prin metoda bulelor nu este foarte uor de paralelizat. Pentru obinerea variantei paralele se folosete metoda numit

transpoziie par-impar. Astfel, fiecare iteraie este realizat n dou faze. n prima dintre ele, denumit faz impar, elementele cu indici impari sunt comparate cu vecinii din dreapta i se efectueaz interschimbarea acestora n cazul n care nu este ndeplinit relaia de ordine. n cea de-a doua faz, numit faza par, elementele cu indici pari se compar cu vecinii din dreapta, efectundu-se interschimbarea dac este nevoie. Ordonarea vectorului este complet dup un numr de maxim n faze (n/2 iteraii), unde n reprezint numrul de elemente ale vectorului. Iteraiile buclelor interioare vor fi executate simultan (n paralel) pe procesoarele disponibile n cadrul sistemului. Complexitatea secvenial a algoritmului de sortare prin metoda bulelor este de ordinul O(n2 ), iar cea paralel se reduce la O(n). Algoritmul de sortarea prin metoda bulelor va sorta elementele din vectorul v1, v2 ,...,vn astfel nct dup sortare, acestea vor fi n ordinea v1 v2 ... vn. Ne propunem s facem o ordonare cresctoare a vectorului v1, v2 ,...,vn. Algoritmul const n parcurgerea tabloului v de mai multe ori, pn cnd devine ordonat. La fiecare pas se compar dou elemente consecutive vi i vi+1 . Dac vi > vi+1 , (i = 1, 2, ..., n - 1), atunci cele dou valori se interschimb ntre ele. Controlul aciunii repetitive este dat de variabila boolean ok, care la fiecare reluare a algoritmului primete valoarea iniial adevrat, i care se schimb n fals dac s-a efectuat o interschimbare de dou elemente consecutive. n momentul n care tabloul v s-a parcurs fr s se mai efectueze nici o schimbare, ok rmne cu valoarea iniial

adevrat i algoritmul se termin, deoarece tabloul este ordonat. Interschimbarea a dou elemente se realizeaz prin intermediul variabilei auxiliare aux care are acelai tip ca i elementele tabloului. Algoritmul in pseudocot:Subalgoritm Metoda_bulelor(v,n) repet ok v[i+l]atunci ok fals aux v[i] v[i] v[i+1] v[i+l] aux sfrit dac sfrit pentru pn cnd ok sfrit subalgoritm Metoda este numit sortare cu bule pentru c elementele mari se ridic la suprafa pn n poziia lor corect, ca nite bule n ap. Sortarea cu bule mai este cunoscut i sub denumirea selectare prin interschimbare sau propagare. Algoritmul n C++ : void Metoda_bulelor(int (&v)[20], int n) {int ok,i,aux; do{ ok=1; for(i=1;iv[i+1]) {ok=0; aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; } } while(ok!=1); } BubbleSortnu foloseste alte structuri de date si din aceasta cauza este recomandabil in cazurile cuputine elemente de sortatsi in cazul in carememoriaeste limitata. 2.2.Sortarea prin metoda selectiei (Selection sort) Sortarea prin metoda seleciei presupune determinarea elementului minim dintre cele nesortate i aducerea lui pe poziia corect. Iniial, algoritmul va determina elementul minim din vector care va fi adus pe prima poziie, dup care se determin minimul din vectorul rmas care va fi adus pe a doua poziie, amd. Complexitatea secvenial a algoritmului este tot de ordinul O(n2 ) ns performanele metodei sunt cu 60% mai bune fa de sortarea prin metoda bulelor. Indiferent de ordinea iniial a elementelor vectorului, algoritmul va efectua un numr de n(n-1)/2 comparaii i n-1 interschimbri iar din acest motiv ordinul de complexitate al variantei secveniale este egal cu O(n2 ). Paralelizarea algoritmului se realizeaz prin distribuirea iteraiilor buclei interioare pe procesoarele disponibile n cadrul sistemului. Datorit faptului c iteraiile interioare vor fi executate simultan, ordinul de complexitate al variantei paralele a algoritmului devine O(n).Ideea algoritmului este urmatoarea: tabloul unidimensional este imprit in dou pri imaginare o parte sortat i o parte nesortat. La nceput, partea sortat este goal, n timp ce partea nesortat conine ntreg tabloul. La fiecare pas, algoritmul gsete elementul minim din partea nesortat i l adaug la finalul prii sortate. Cnd partea nesortat rmne goal, algoritmul se oprete.

Cnd algoritmul sorteaz un tablou unidimensional, interschimb primul element al prii nesortate cu elementul minim i dup aceea el este inclus n partea sortat. Aceast implementare a sortrii prin selecie nu este stabil. n cazul cnd sortm o list, i, n loc de interschimbri, elementul minim este legat de partea nesortat, sortarea prin selecie este stabil.Exemplu:Dorim s sortm irul {5, 1, 9, -2, 14, 2, 9,} utiliznd sortarea prin selecie.Legend:Partea nesortat;Partea sortat;Elementele care vor fi interschimbate.5, 1, 9, -2, 14, 2, 9; nesortat5, 1, 9, -2, 14, 2, 9; interschimbm 5 cu -2 -2, 1, 9, 5, 14, 2, 9; 1 rmne pe poziie-2, 1, 9, 5, 14, 2, 9; interschimbm 2 cu 9-2, 1, 2, 5, 14, 9, 9; 5 ramne pe poziie-2, 1, 2, 5, 14, 9, 9; interschimbm 14 cu 9 -2, 1, 2, 5, 9, 9 14; vector sortat

Algoritmul in pseudocod:pentru i 0,n-1 executmin i; pentru j i+1,n executdac v[j]