Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilRozálie Ševčíková
1
1 / 2X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Různé algoritmy mají různou složitost
2
2/ 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting The complexity of different algorithms varies X36DSA 2005
3
3 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting From this… X36DSA 2005
4
4 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting …to this! X36DSA 2005
5
5 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Navrhněte a popište algoritmus pro seřazení balíčku karet. Úkolem je sestavit algoritmus tak, aby využíval co nejmenšího počtu pomocných balíčků. Smíte používat jen jednu ruku a v ní smíte držet vždy nanejvýš jednu kartu. Během řazení můžete (a musíte) odkládat karty do několika pomocných balíčků. Z každého balíčku je vidět a je známa pouze hodnota nejsvrchnější karty a to jen v případě, že leží lícem nahoru. Cvičení X36DSA 2005
6
6 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Design and describe algorithm to sort a pack of playing cards The task is to construct the algorithm so that it will use as few auxiliary packs as possible. You can use only one hand and you can hold in it no more than one card any time. You can (in fact, you must) lay the cards on some additional auxiliary packs during the sort. Only the value of the uppermost card of any pack is visible and known and this only in case when it lays face up. Exercise X36DSA 2005
7
7 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Selection Sort Řazení výběrem (minima nebo maxima) X36DSA 2005
8
8 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort A A B B D D E E J J M M K K O O R R T T U U Z Z Start Step 1 B B D D E E J J M M K K O O R R U U Z Z T T D D E E K K Z Z B B J J M M O O R R T T U U A A A A min X36DSA 2005
9
9 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step 2 Step 3 B B D D E E J J M M K K O O R R T T U U Z Z A A E E Z Z B B D D E E Z Z B B A A A A D D E E J J M M K K O O R R U U Z Z T T A A B B J J M M K K O O R R T T U U D D min J J M M K K O O R R T T U U X36DSA 2005
10
10 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step k Sorted B B D D E E J J K K B B D D E E J J K K O O R R U U Z Z A A A A M M T T k B B D D E E J J K K O O R R U U Z Z A A M M T T …... … M M T T R R U U Z Z O O min X36DSA 2005
11
11 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort for (i = 0; i < n-1; i++) { // select min jmin = i; for (j = i+1; j < n; j++) { if (a[j] < a[jmin]) { jmin = j; } // put min min = a[jmin]; a[jmin] = a[i]; a[i] = min; } X36DSA 2005
12
12 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step k n-kk n Select minimum ……. (n-k) tests Tests total B B D D E E J J K K A A M M T T R R U U Z Z O O min X36DSA 2005
13
13 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step k n-k k moves ……. 3 Moves total B B D D E E J J K K A A M M T T R R U U Z Z O O X36DSA 2005
14
14 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Summary Tests total Moves total = (n) Asymptotic complexity of Selection Sort is (n 2 ) = (n 2 ) Operations total + = (n 2 ) X36DSA 2005
15
15 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Insertion Sort Řazení vkládáním (na adekvátní pozici) X36DSA 2005
16
16 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort A A B B D D E E J J M M K K O O R R T T U U Z Z Start Step 1 B B D D E E M M O O R R Z Z T T D D E E Z Z A A B B M M R R T T O O A A J J K K U U J J K K U U X36DSA 2005
17
17 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Step 3 B B D D E E M M O O R R Z Z T T A A J J K K U U D D E E M M O O R R Z Z T T A A J J K K U U B B D D E E M M O O R R Z Z A A J J K K U U T T D D E E M M O O R R Z Z A A J J U U T T K K B B B B Step 2 X36DSA 2005
18
18 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Step k D D E E Z Z A A J J B B D D E E O O R R Z Z A A J J K K U U T T B B M M K K O O R R U U T T M M Sorted B B D D E E J J K K O O R R U U Z Z A A M M T T k …... … X36DSA 2005
19
19 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort for (i = 1; i < n; i++) { // find & make // place for a[i] insVal = a[i]; j = i-1; while ((j >= 0) && (a[j] > insVal)) { a[j+1] = a[j]; j--; } // insert a[i] a[j+1] = insVal; } X36DSA 2005
20
20 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Step k D D E E O O R R Z Z A A J J K K U U T T B B M M k tests ……. 1 best case k worst case (k+1)/2 average case tests + 1 = moves moves ……. 3 *) best case k+1 worst case (k+3)/2 average case *) instead of 2 X36DSA 2005
21
21 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Summary Tests total Moves total = (n 2 ) average case Asymptotic complexity of Insertion Sort is O(n 2 ) (!!) n - 1 (n 2 - n)/2 = (n 2 ) = (n) best case worst case (n 2 + n + 2)/4 = (n 2 ) average case 2n - 2 (n 2 + n - 2)/2 = (n 2 ) = (n) best case worst case (n 2 + 5n - 6)/4 Tests total X36DSA 2005
22
22 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Bubble Sort Bublinkové třídění X36DSA 2005
23
23 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort A A B B D D E E J J M M K K O O R R T T U U Z Z Start Phase 1 A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U Z Z X36DSA 2005
24
24 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Phase 1 A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U Z Z … etc … Phase 2 A A B B D D E E J J M M K K O O R R T T U U Z Z X36DSA 2005
25
25 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Phase 2 Phase 3 A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U … etc … A A B B D D E E J J M M K K O O R R T T U U Z Z Z Z X36DSA 2005
26
26 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Phase 3 Phase n-1 … etc … A A B B D D E E J J M M K K O O R R T T U U Z Z ……... B B D D E E J J K K O O R R U U Z Z A A M M T T Sorted B B D D E E J J K K O O R R U U Z Z A A M M T T n-2n-2 X36DSA 2005
27
for (lastPos = n-1; lastPos > 0; lastPos--) { for (j = 0; j < lastPos-1; j++) { if (a[j] > a[j+1]) swap(a, j, j+1); 27 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Summary Tests total Moves total 0 = (1) = (n 2 ) best case worst case = (n 2 ) (n-1) + (n-2) + … + 2 + 1 = Asymptotic complexity of Bubble Sort is (n 2 ) X36DSA 2005
28
28 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Sir Charles Antony Richard Hoare C.A.R. Hoare: Quicksort. Computer Journal, Vol. 5, 1, 10-15 (1962) X36DSA 2005
29
29 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Divide & Conquer! Divide et Impera! The problem The solution The problem The solution Solve the subproblem their work our work Merge! Divide! X36DSA 2005
30
30 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort A A B B D D E E J J M M K K O O R R T T U U Z Z Small Big A A B B D D E E J J M M K K O O R R T T U U Z Z Small M M O O R R T T U U Z Z Big Divide & Conquer! A A B B D D E E J J K K Start The idea Divide! X36DSA 2005
31
QuickSort 31 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … M M O O R R T T U U Z Z A A B B D D E E J J K K Two separate problems M M O O R R T T U U Z Z A A B B D D E E J J K K M M O O R R T T U U Z Z A A B B D D E E J J K K Four separate problems etc… Divide! … …………………… X36DSA 2005
32
32 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Conquered! A A B B D D E E J J M M K K O O R R T T U U Z Z … … … … … … … … … … … … … … … … … X36DSA 2005
33
33 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort pivot A A B B D D E E J J M M K K O O R R T T U U Z Z M M ………… Init iLiR Partitioning Pivot X36DSA 2005
34
34/ 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort A A B B D D E E J J M M K K O O R R T T U U Z Z M M iLiR A A B B D D E E J J M M K K O O R R T T U U Z Z iL iR Step 1 Partitioning Pivot X36DSA 2005
35
35/ 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort M M iLiR A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O T T U U Z Z iLiR R R Partitioning Step 2 iL Pivot X36DSA 2005
36
36 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort M M Partitioning Step 3 A A B B D D E E J J M M K K O O T T U U Z Z R R iR iL iR Stop Divide! Init iLiR A A B B D D E E J J M M K K O O T T U U Z Z R R E E Pivot X36DSA 2005
37
37 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning iLiR A A B B D D E E J J M M K K O O T T U U Z Z R R E E Step 1 A A D D J J M M K K O O T T U U Z Z R R B B E E iLiR Pivot X36DSA 2005
38
iR 38 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning E E Step 2 A A D D J J M M K K O O T T U U Z Z R R B B E E iL iR A A D D J J M M K K O O T T U U Z Z R R B B E E iL iR Stop Divide! A A D D J J M M K K O O T T U U Z Z R R B B E E iRiL Init B B Pivot X36DSA 2005
39
39 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning A A D D J J M M K K O O T T U U Z Z R R B B E E iRiL B B A A D D J J M M K K O O T T U U Z Z R R B B E E iR iL iR Stop A A D D J J M M K K O O T T U U Z Z R R B B E E iLiR B B Step 1 Divide! Init Pivot X36DSA 2005
40
40 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning A A D D M M K K O O U U Z Z R R B B iR B B Step 1 iL D D J J M M K K O O T T U U Z Z R R B B E E iRiL Init K K iL iR …….. == Next Partition etc… A A J J E E T T Pivot X36DSA 2005
41
void qSort(Item a[], int low, int high) { int iL = low, iR = high; Item pivot = a[low]; do { while (a[iL] < pivot) iL++; while (a[iR] > pivot) iR--; if (iL < iR) { swap(a,iL, iR); iL++; iR--; } else { if (iL == iR) { iL++; iR--;} } while( iL <= iR); if (low < iR) qSort(a, low, iR); if (iL < high) qSort(a, iL, high); } 41 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort iR iL Divide! iRiL K K K K D D K K K K K K D D D D U U K K X36DSA 2005
42
Levý index se nastaví na začátek zpracovávaného úseku pole, pravý na jeho konec, zvolí se pivot. Cyklus: Levý index se pohybuje doprava a zastaví se na prvku vetším nebo rovném pivotovi. Pravý index se pohybuje doleva a zastaví se na prvku menším nebo rovném pivotovi. Pokud je levý index ještě před pravým, příslušné prvky se prohodí, a oba indexy se posunou o 1 ve svém směru. Jinak pokud se indexy rovnají, jen se oba posunou o 1 ve svém směru. Cyklus se opakuje, dokud se indexy neprekříží, tj. pravý se dostane pred levého. Pak nastává rekurzivní volání na úsek od začátku do pravého(!) indexu včetně a na úsek od levého(!) indexu včetně až do konce, má-li príslušný úsek délku větší než 1. 42 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort X36DSA 2005
43
43 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Asymptotic complexity (n 2 ) (n·log 2 (n)) best case worst case Tests and moves total average case “Average” complexity of QuickSort is (n·log 2 (n)) (!!) Asymptotic complexity of QuickSort is O(n 2 ) (!!) (n·log 2 (n)) … but! : X36DSA 2005
44
44 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting 110 1010033.23.0 10010 000 6 64.415.1 1 0001 000 000 9 965.8 100.3 10 000100 000 000132 877.1752.6 100 00010 000 000 0001 660 964.06 020.6 1 000 0001 000 000 000 00019 931 568.550 171.7 10 000 000100 000 000 000 000232 534 966.6430 042.9 N2N2 N log 2 (N) N N2N2 Effectivity comparison decele- ration (1~1sec) 3 sec 15 sec 1.5 min 13 min 1.5 hrs 14 hrs 5 days X36DSA 2005
45
45 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sort stability XbXb XbXb XcXc XcXc XaXa XaXa XbXb XbXb XcXc XcXc XaXa XaXa Stable sort does not change the order of elements with equal value. Stabilní řazení nemění pořadí prvků se stejnou hodnotou. Sort X36DSA 2005
46
A2A2 A2A2 A1A1 A1A1 A3A3 A3A3 46 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sort stability B1B1 B1B1 D1D1 D1D1 C1C1 C1C1 A1A1 A1A1 C2C2 C2C2 B2B2 B2B2 A2A2 A2A2 D2D2 D2D2 B3B3 B3B3 A1A1 A1A1 A2A2 A2A2 A3A3 A3A3 B 1 B2B2 B2B2 B3B3 B3B3 C1C1 C1C1 C2C2 C2C2 C3C3 C3C3 D1D1 D1D1 D2D2 D2D2 D3D3 D3D3 A3A3 A3A3 D3D3 D3D3 C3C3 C3C3 B2B2 B2B2 B3B3 B3B3 C3C3 C3C3 C1C1 C1C1 C2C2 C2C2 D3D3 D3D3 D2D2 D2D2 D1D1 D1D1 Select Insert Bubble B 1 D1D1 D1D1 C1C1 C1C1 A1A1 A1A1 C2C2 C2C2 B2B2 B2B2 A2A2 A2A2 D2D2 D2D2 B3B3 B3B3 A3A3 A3A3 D3D3 D3D3 C3C3 C3C3 Stable implementation QuickSort -- Always!! Select Insert Bubble Unstable implementation -- X36DSA 2005
47
47 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Různé algoritmy mají různou složitost X36DSA 2005
48
48 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting The complexity of different algorithms varies X36DSA 2005
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.