Documente Academic
Documente Profesional
Documente Cultură
Sortari
Sortari
2
A. Sortari cu algoritmi elementari , complexitate = O( 𝑛 )
a. Bubble sort
b. Selection sort
c. Insertion sort
B. Sortari divide et impera, complexitate = O(nlog(n))
a. Merge sort
b. Quicksort
C. Sortari radix & bucket sort
Complexitate:
IMAGINI
BUBBLE SORT
Sursa: https://www.faceprep.in/c/bubble-sort-in-c/
SELECTION SORT
Sursa: https://www.programmingsimplified.com/c/source-code/c-program-selection-sort
INSERTION SORT
https://www.101computing.net/merge-sort-algorithm/
QUICK SORT
Alegem un element, asa numit pivot. Pivotul poate avea urmatoarele pozitii: in mijloc, la inceput sau
la final. De exemplu, aici pivotul este la mijloc. In exercitiile de la curs pozitia pivotului este la final.
Se tot imparte in submultimi cu numere>pivot respetiv <pivot , pana cand nu mai avem ce imparti și
multimea este sortata.
RADIX SORT
COUNTING SORT
VIDEO
https://www.youtube.com/watch?v=7zuGmKfUt7s
https://www.youtube.com/watch?v=OGzPmgsI-pQ
https://www.youtube.com/watch?v=ywWBy6J5gz8
https://www.youtube.com/watch?v=Z3dCjzhjAWA
https://www.youtube.com/watch?v=4VqmGXwpLqc
Explicatii curs
i=0
22, 55, 78, 35, 11, 17, 31, 9, 5, 47, 99 Final pt i=0
i=1
22, 55, 35, 11, 17, 31, 9, 5, 47, 78, 99 ? 78 < 99 DA - am ajuns la final pt i = 1
i=2
i=3
i=4
i=5
i=6
i=7
i=9
i = 10
SELECTION SORT
3 - se compara elementul de pe pozitia curenta cu elementul minim si daca e mai mare, se face
schimbul intre cele doua elem.
4 - se trece la elementul urmator din lista (poz 1 = poz curenta) care e considerat ca fiind minim
OBS
- lista va fi divizata in doua subliste: una sortata (stanga) si una nesortata (dreapta)
{5,} 22, {78, 99, 35, 11, 17, 31, 9, 55, 47}
i=1
{5, 9}, 78, {99, 35, 11, 17, 31, 22, 55, 47}
i=2
{5, 9, 11}, 99, {35, 78, 17, 31, 22, 55, 47}
i=3
{5, 9, 11, 17}, 35, {78, 99, 31, 22, 55, 47}
i=4
{5, 9, 11, 17, 22}, 78, {99, 31, 35, 55, 47}
i=5
{5, 9, 11, 17, 22, 31}, 99, {78, 35, 55, 47}
i=6
{5, 9, 11, 17, 22, 31, 35}, 78, {99, 55, 47}
i=7
{5, 9, 11, 17, 22, 31, 35, 47}, 99, {55, 78}
i=8
{5, 9, 11, 17, 22, 31, 35, 47, 55}, 99, {78}
i=9
i = 10
INSERTION SORT
- lista va fi divizata in 2 subliste: una partial ordonata (stanga) si alta neordonata (dreapta)
i=0
22 < 55
i=1
78 > 55
i=2
99 > 78
i=3
i=4
{22, 35, 55, 78, 99}, 11, {17, 31, 9, 5, 47}
11 < 99; 11 < 78; 11 < 55; 11 < 35; 11 < 22;
i=5
17 < 99; 17 < 78; 17 < 55; 17 < 35; 17 < 22; 17 > 11;
i=6
{11, 17, 22, 35, 55, 78, 99}, 31, {9, 5, 47}
31 < 99; 31 < 78; 31 < 55; 31 < 35; 31 > 22;
{11, 17, 22, 31, 35, 55, 78, 99}, {9, 5, 47}
i=7
{11, 17, 22, 31, 35, 55, 78, 99}, 9, {5, 47}
9 < 99; 9 < 78; 9 < 55; 9 < 35; 9 < 22; 9 < 17; 9 < 11;
{9, 11, 17, 22, 31, 35, 55, 78, 99}, {5, 47}
i=8
{9, 11, 17, 22, 31, 35, 55, 78, 99}, 5, {47}
5 < 99; 5 < 78; 5 < 55; 5 < 35; 5 < 22; 5 < 17; 5 < 11;
{5, 9, 11, 17, 22, 31, 35, 55, 78, 99}, {47}
i=9
{5, 9, 11, 17, 22, 31, 35, 47; 55, 78, 99}
MERGE SORT
Complexitate: nlog(n)
- DIVIDE: se imparte recursiv lista initiala in doua subliste, aceste la randul lor se impart pana se
obtin liste de un element
- IMPERA: se compara elementele doua cate doua (tinand cont de ramura de unde au provenit)
- se construiesc subliste astfel: se compara primul elemnt din prima sublista cu primul elemnt din
sublista a doua.
Daca primul e mai mic, acesta se pune in lista rezultat si se trece la urmatorul element din sublista sa
care se compara cu elemntul curent din lista a doua.
Daca nu, se pune elementul din lista a doua si se avanseaza la urmatorul element din lista sa.
Sublistele sunt ordonate.
Cand s-au terminat elentele dintr-o sublista, elementele din cealalta sublista se copiaza in ordine in
lista finala.
DIVIDE
{55} {22} {78} {99, 35} {11} {17, 31} {9} {5, 47}
{55} {22} {78} {35, 99} {11} {17, 31} {9} {5, 47}
{22, 55} {35, 78, 99} {11, 17, 31} {5, 9, 47}
{22, 35, 55, 78, 99} {5, 9, 11, 17, 31, 47}
? 22 < 5 NU; 22 < 9 NU; 22 < 17 NU; 22 < 31 DA {5, 9, 11, 17, 22}
{5, 9, 11, 17, 22, 31, 35, 47, 55, 78, 99}
QUICK SORT
Complexitate: nlog(n)
- se alege un pivot dupa un algoritm preferat. ex primul elemnt, ultimul element, elementul din
mijloc, etc
- se imaprte lista in doua subliste astfel: elementele mai mici decat pivotul se pun in stanga iar cele
mai mari in dreapta pivotului, in ordinea in care au fost
pivot: 47
pivot: 5 pivot: 99
pivot: 31 pivot: 55
5 9 {22, 11, 17} 31 {35} 47 55 78 99
pivot: 17 pivot: 35
5 9 {11} 17 {22} 31 35 47 55 78 99
5 9 11 17 22 31 35 47 55 78 99
Radix sort
0123
0321
0044
0033
0778
0900
5667
0055
0003
0022
0900
0321
0022
0123
0033
0003
0044
0055
5667
0778
0900
0003
0321
0022
0123
0033
0044
0055
5667
0778
///...........
0003
0022
0033
0044
0055
0123
0321
5667
0778
0900
//
0003
0022
0033
0044
0055
0123
0321
0778
0900
5667
Bucket sort
2: //
3://
4: //