Sunteți pe pagina 1din 14

Sortarea este procesul prin care

elementele setului sunt rearanjate astfel


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

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