Sorting
Sorting
Sortare Rapidă
Sortare prin îmbinare
Sortare prin bule
[Link]şire.
Exemplu de Bubble Sort
7 28 5 4 2 75 48 2 547 8 2 45 7 8
2 7 5 48
SORTARE_INSERTIE (A, N)
[Link][0] = -∞.
[Link]ă paș ii 3 până la 5 pentru K = 2, 3, …, N:
[Link] = A[K] ajuta PTR = K - 1.
[Link] ț i în timp ce TEMP < A[PTR]:
(a) SetA[PTR+1] = A[PTR]
(b) SetPTR = PTR - 1.
Eid de Loop.
[Link][PTR+1] = TEMP.
[Eid-ul Loop 2.]
[Link].
Exemplu de sortare prin inserție
Sort: 34 8 64 51 32 21
34 864 51 32 21
Algoritmul vede că 8 este mai mic decât 34, aș a că îl schimbă.
8 3464 5132 21
51 este mai mic decât 64, aș a că fac schimb.
8 34 51 6432 21
8 34 51 643221 (din diapozitivul anterior)
Algoritmul vede 32 ca pe un alt număr mai mic ș i îl mută.
locaț ii adecvate între
8 32 34 51 6421
Algoritmul vede 21 ca un alt număr mai mic ș i se mută
iito betweei8aid32.
Numerele sortate fiial:
8 21 32 34 51 64
Iisertoi SortComplexity
Acest algoritm de sortare este folosit frecvent atunci când este foarte mic.
Cazul cel mai rău apare când elementele din array sunt în ordine inversă. Ciclu lor trebuie să
foloseș te comparaț ii K - 1.
f(i) = 1 + 2 + 3 + ….+ (i – 1)
= i(i – 1)/2
O(i ) 2
8 4 6 9 2 3 1 1 2 3 4 9 6 8
1 4 6 9 2 3 8 1 2 3 4 6 9 8
1 2 6 9 4 3 8 1 2 3 4 6 8 9
1 2 3 9 4 6 8 1 2 3 4 6 8 9
Selectoi SortComplexity
Numărul de compara ț ii ale sortării prin selec ț ie
algoritmul necesită păstrarea ordinii originale a elementelor.
Există i-1 compara ț ii dure în timpul trecerii 1 pentru a găsi
cel mai mic element, i-2 compari durin trecerea 2to fi
elementul secundar cel mai mic, ajută să o fac.
În consecinț ă,
f (i) = (i-1)+(i-2)+-----+2+1
= i(i-1)/2
= O(i 2)
Funcț ia f(i) are aceeaș i valoare O(i) atât2 pentru cel mai rău caz
caz mediu de ajutor.
Algoritm de sortare rapidă
PARTIȚIONARE(A, ÎNCEPUT, SFÂRȘ IT, LOC)
Eid-ul Loop
(b) Dacă LOC == STÂNGA atunci returnează
(c) Dacă A[STÂNGA] > A[LOC] atunci
(i) Iiterchaige A[STÂNGA] ș i A[LOC]
(ii) SetLOC = LEFT
(iii) Mergi la pasul 2.
[Structura oficiului Eid]
Algoritmul quick sort
QUICKSORT()
1.1- TOP = -1
2.2- Dacă N >1 atunci TOP = TOP + 1, LOWER[TOP] = 0, UPPER[TOP] = N-1
3.3- Repeta ț i pa ș ii 4 până la 7 în timp ce TOP != -1
Caz mediu
O(i log i)
Sortare prin îmbinare
Împarte:Dvidetthen-elemeitsequeicet sortate
două subsecvenț e de n/2 elemente fiecare
Conquer:Sorcele două subsecuenț e recursiv
usiig ordonare prin divizare
Combine:Mergecele două subsequence sortate pentru
producea răspunsul sortat.
Sortare prin îmbinare - Exemplu
Secvenț ă Originală Secvenț ă sortată
18 26 32 6 43 15 9 1 1 6 9 15 18 26 32 43
18 26 32 6 43 15 91 6 18 26 32 1 9 15
18 26 32 6 43 15 9 1 18 26 6 32 15 43 1 9
18 26 32 6 43 15 9 1 18 26 32 6 43 15 9 1
18 26 32 6 43 15 9 1
Sortare prin îmbinare(A, p, r)
o secvenț ă denumerele stocate în array A
o secvenț ă ordonată denumere
4 MergeSort(A,q+1,r)
5 Fuzionare(A,p,q,r) //fuzionează A[p..q] cu A[q+1..r]
A … 1 6 8 9 26 32 42 43 …
L 6 8 26 32
R 1 9 42 43
eu
Analiza Sortării prin Îmbinare
Timpul de execuț ie T(n) pentru Sortarea prin Interclasare:
Împărț iț i: calculul mediei necesită (1)
Coiquer: solviig 2 sub-probleme iau 2T(n/2)
Combiie: mergiignelemeitstakes (n)
Total:
T(n)= (1)ifn =1
T(n)=2T(n/2)+ (n)ifn >1
T(n) = 2T(n/2) +n
=2 ((n/2)log(n/2) + (n/2)) +n
= n(log(n/2)) + 2n
=nlogn–n+ 2n
=nlogn+n
=O(nlogn)
Comparaț ia algoritmilor
Best Average Worst
Caz Caz Caz
Sortare prin bule O(n) O(n2) O(n2)
Sortare prin inserț ie O(n) O(n2) O(n2)
Sortare prin selecț ie O(n2) O(n2) O(n2)
Sortare prin îmbinare
O(n log n) O(n log n) O(n log n)
Sortare rapidă O(n log n) O(n log n) O(n2)
Sortare prin grămadă
O(n log n) O(n log n) O(n log n)
Mulț umesc