nct cheile lor s se afle ntr-o anumit ordine. Metodele de sortare se clasific n metode directe (simple); metode avansate.
Selecia direct este una dintre cele mai simple metode de sortare, metod care lucreaz foarte bine pentru numr mic de elemente, fiecare element fiind mutat cel mult o dat. Algoritmul presupune ca la fiecare pas i s se gseasc elementul minim dintre T[i+1], T[i+2],, T[n] i s se interschimbe cu T[i].
Algoritmul metodei de sortare prin selecie este urmtorul:
pentru i 1, n-1 execut k i min T[i] pentru j i +1, n execut dac T[j] < min atunci min T[j] k j sfrit dac sfrit pentru T[k] T[i] T[i] min sfrit pentru
Inseria direct aparine familiei de tehnici de sortare care se bazeaz pe metoda juctorului de bridge. nainte de a examina nregistrarea T[i], vom considera c nregistrrile precedente T[1], , T[i-1] au fost deja sortate, apoi vom insera T[i] n locul ce i revine ntre nregistrrile sortate anterior.
Se consider 1 i n i nregistrrile T[1], T[2], , T[i-1] aranjate astfel nct T[1] T[2] T[i-1]. Vom compara pe rnd noua cheie T[i] cu T[i-1], T[i-2], , pn ce vom descoperi c T[i] trebuie inserat ntre nregistrrile T[k] i T[k+1]; apoi deplasm nregistrrile T[k+1], ..., T[i+1] cu un spaiu i introducem noua nregistrare n poziia k+1. Deoarece T[i] intr la locul su aceast metod a fost denumit metoda de cernere sau scufundare.
Algoritmul metodei de sortare prin inserie este: pentru i 2, n execut k 1 ct timp T[k] < T[i] execut k k +1 sfrit ct timp dac i k atunci temp T[i] pentru j i, k+1, -1 execut T[ j] T[ j-1 ] sfrit pentru T[k] temp sfrit dac
sfrit pentru
Aceast metod se rezum la a compara fiecare element cu celelalte, fcndu-se interschimbarea dac elementul mai mare are indexul mai mic. Se repet parcurgerea vectorului, cu interschimbul elementelor care nu respect relaia de ordine, pn se ajunge la o parcurgere fr interschimb. Pentru a reine dac au loc interschimbri ntre elemente, se folosete o variabil inv cu dou valori posibile: 0(fals), dac nu a avut loc nici un interschimb i 1(adevrat) dac s-a realizat cel puin un interschimb. La prima trecere prin vector se vor analiza perechile de elemente consecutive (T[i], T[i+1]), cu i = 1, 2, , n-1 i pentru fiecare pereche, dac este cazul, se va face interschimbul. Algoritmul de sortare prin metoda bulelor este urmtorul:
repet inv fals pentru i 1, n -1 execut dac T[i] > T[i+1] atunci aux T[i] T[i] T[i+1] T[i+1] aux inv adevarat sfrit dac sfrit pentru pn cnd inv=fals
Aceast sortare se bazeaz pe idea c elementul de pe poziia j din secvena final sortat este mai mare dect (j-1) dintre celelalte elemete. Adic, dac tim c o anumit cheie este mai mare decat alte 20 de chei, nregistrarea respectiv trebuie aezat n poziia 21. Deci, se compar fiecare pereche de chei, numrnd cte vor fi mai mici dect fiecare cheie particular. Calea de a face comparaiile este urmtoarea: compar ((T[i] cu T[j]) pentru 1 j n) pentru 1 i n. Algoritmul metodei de sortare prin numrare este urmtorul: pentru i 1, n execut NR[i] 1 sfrit pentru pentru i 1, n execut pentru j 1, n execut dac T[i] > T[j] atunci NR[i] NR[i] + 1 sfrit dac
sfrit pentru sfrit pentru pentru i 1, n execut VS[ NR[i] ] T[i] sfrit pentru
Aceast metod de sortare se bazeaz pe tehnica Divide et Impera. Principiul metodei este urmtorul: Divide partiionarea problemei n mai multe subprobleme. n cazul algoritmului nostru, partiionarea unui vector iniial T[p], , T[q] n doi subvectori T[p], , T[m] i T[m+1], , T[q], unde m se obine prin formula [(p+q)/2] Impera rezolvarea problemelor obinute la pasul anterior. Se va apela recursiv algoritmul pentru cele dou partiii create. Dac subproblema obinut este cu rezolvare direct, atunci se va rezolva (dac partiia are 1 element atunci problema este rezolvat, iar dac sunt 2 elemente nesortate, atunci se va face interschimbarea acestora). Combine combinarea soluiilor obinute pentru subprobleme ntr-o soluie pentru problema iniial. Aceast etap se realizeaz prin procedeul numit interclasare: avnd doi vectori sortai, se interclaseaz elementele i se obine un vector ordonat care conine elementele celor doi vectori iniiali).
Procedura DIVIMP (T, p, q) dac q - p 1 atunci daca T[p] > T[q] atunci aux T[p] T[p] T[q] T[q] aux sfrit dac altfel m [(p+q)/2] DIVIMP ( T, p, m) DIVIMP (T, m+1, q) INTERCLASARE ( T, p, q, m) sfrit dac
sfarsit
Aceast metod de sortare se bazeaz pe tehnica Divide et Impera
Procedura QuiqkSort (T, li, ls) dac li < ls atunci Partitionare (T, li, ls, k) QuickSort (T, li, k-1) QuickSort (T, k+1, ls) sfrit dac sfrit