Sunteți pe pagina 1din 1

Modulul IV.

Algoritmi de sortare
Capitolul 13. Sortare prin selectie

Ideea algoritmului este: gaseste cel mai mic element si muta-l in prima pozitie
prin interschimbarea cu elementul de pe prima pozitie si repeta procedeul pentru
elementele listei de indici 2, 3, ..., N.
Algoritm de sortare prin selectie (varianta iterativa): Se dau K1, K2, ..., KN.
for i = 1, N-1
Determina indexul celui mai mic element dintre Ki, Ki+1, ..., KN.
Fie index_mic acesta.
if i  index_min then Ki  Kindex_mic
endif
endfor
Algoritm de sortare prin selectie (varianta recursiva): Se dau K1, K2, ..., KN.
Selectie (K, prim, ultim) /* Sorteaza elementele Kprim, ..., Kultim. Apelarea
initiala este pentru prim = 1 si ultim =N*/
if ( prim < ultim) then
Determina indexul celui mai mic element dintre Kprim, Kprim+1, ..., Kultim.
Fie index_mic acesta.
if prim  index_min then Kprim  Kindex_mic
endif
call Selectie (K, prim +1, ultim)
endif
Analiza algoritmului: Operatia principala care se efectueaza este comparatia
dintre elementele listei. Acest algoritm prezinta o singura clasa de valori de intrare
posibile, numarul de comparatii efectuate fiind acelasi indiferent de lista de intrare.
Observati ce numarul de comparatii necesar determinarii celui mai mic element intr-
un sir cu n elemente este n-1 si deci relatia de recurenta care ne da acest numar de
comparatii efectuate de algoritmul descris mai sus este CN = N-1 + CN-1, daca N > 1 si
N 1
1
C1 = 0 deci CN =  i  N ( N  1) deci complexitatea algoritmul este O(N2).
i 1 2

Scrieti un program care implementeaza algoritmii de mai sus.


Lab 16