Select sort: krok 1: výběr klíče z n prvků vyžaduje 1 porovnání krok 2: výběr klíče z 1 prvků vyžaduje 2 porovnání krok 3: výběr klíče z 2 prvků vyžaduje 3 porovnání atd. celkem porovnání Zlepšení = použít více informací z porovnávání v předchozím kroku 1
binární stromové struktury: výběr menšího klíče z dvojice vyžaduje porovnání celkem dvojic výběr menšího klíče ze čtveřice klíčů vyžaduje celkem dvojic výběr menšího klíče z osmice klíčů vyžaduje celkem dvojic atd. celkem porovnání 1 porovnání porovnání struktura: každý rodičovský uzel má nejvýše 2 potomky levý a pravý potomek poslední vrstva je tvořena záznamy s klíčem vnější uzel stromu key další info uzly ostatních vrstev jsou tvořeny pouze hodnotou klíče a odkazy na potomky vnitřní uzel platí: key levý pravý č ý, ý P L R P R 2
A root B C O P Q D R vytvoření: (od listů) procházíme celou vrstvu uzlů nejprve 0,, 1 v dalších krocích vrstvu s nově vytvořenými uzly porovnáme každou dvojici uzlů z předchozího kroku vybereme z nich ten s menší hodnotou v případě rovnosti hodnot klíčů vybereme ten vlevo (stabilita) vytvoříme nový vnitřní uzel s hodnotou menšího z klíčů nad porovnávanou dvojicí klíčů ukončení: už nemáme žádnou dvojici klíčů pro porovnání pouze jeden kořenový uzel ROOT 3
1 menší z dvojice 4
1 5 menší z dvojice 1 5 5* menší z dvojice 5
1 5 5* 0 menší z dvojice 1 1 5 5* 0 menší z dvojice 6
1 0 1 5 5* 0 menší z dvojice 0 menší z dvojice 1 0 1 5 5* 0 7
kořen 0 1 0 1 5 5* 0 odstranění prvku s nejmenší hodnotou z celého stromu procházíme strom od kořene k listu nahradíme hodnotu klíče prázdnou / nedefinovanou hodnotou čísla maximální, znaky konec kódové tabulky lze také nahradit hodnotou druhého potomka nahrazení prázdných hodnot uzlů procházíme strom od listu ke kořeni nahradíme prázdnou hodnotu klíče menším z potomků ukončení: kořen obsahuje prázdnou / nedefinovanou hodnotu 8
Výstupní posloupnost: kořen 0 1 0 1 5 5* 0 Výstupní posloupnost: 1 0 1 5 5* 0 9
Výstupní posloupnost: 1 1 5 5* 0 Výstupní posloupnost: 1 1 5 5* 10
Výstupní posloupnost: 0 1 1 5 5* 3 1 5 8 10 5* 2 Výstupní posloupnost: 0 nahrazení menším 1 1 5 5* 2 3 1 5 8 10 5* 2 11
Výstupní posloupnost: 0 nahrazení menším 1 2 1 5 5* 2 3 1 5 8 10 5* 2 Výstupní posloupnost: 0 1 nahrazení menším 1 2 1 5 5* 2 3 1 5 8 10 5* 2 12
Výstupní posloupnost: 0, 1 2 5 5* 2 3 5 8 10 5* 2 Výstupní posloupnost: 0, 1 2 nahrazení menším 3 2 3 5 5* 2 3 5 8 10 5* 2 13
Výstupní posloupnost: 0, 1, 2 3 3 5 5* 3 5 8 10 5* Výstupní posloupnost: 0, 1, 2 3 nahrazení menším 3 5* 3 5 5* 3 5 8 10 5* 14
Výstupní posloupnost: 0, 1, 2, 3 5* 5 5* 5 8 10 5* Výstupní posloupnost: 0, 1, 2, 3 5 nahrazení menším 5 5* 5 5* 5 8 10 5* 15
Výstupní posloupnost: 0, 1, 2, 3, 5 5* 5* 8 10 5* Výstupní posloupnost: 0, 1, 2, 3, 5 5* nahrazení menším 8 5* 8 5* 8 10 5* 16
Výstupní posloupnost: 0, 1, 2, 3, 5, 5* 8 8 8 10 Výstupní posloupnost: 0, 1, 2, 3, 5, 5* 8 nahrazení menším 8 10 8 10 8 10 17
Výstupní posloupnost: 0, 1, 2, 3, 5, 5*, 8 10 10 10 Výstupní posloupnost: 0, 1, 2, 3, 5, 5*, 8 10 nahrazení menším 10 10 10 18
Výstupní posloupnost: 0, 1, 2, 3, 5, 5*, 8, 10 Výstupní posloupnost: 0, 1, 2, 3, 5, 5*, 8, 10 nahrazení menším 19
Výstupní posloupnost: 0, 1, 2, 3, 5, 5*, 8, 10 kořen obsahuje nedefinovanou hodnotu stabilita = ANO přirozenost = NE? 1 ř 2 š 1 2 log? 1 navíc á í log hloubka stromu log n=1 h=0 n=2 h=1 n=3,4 h=2 n=5,6,7,8 h=3 : : 2 2 h 20
počet záznamů Select Sort Shell Sort Knuth Sort Stromové třídění n n.(n-1)/2 n 3/2 n 1,26 n.log 2 n 10 45 32 19 34 100 4.950 1.000 332 665 10 3 499.500 31.623 6.026 9.966 10 6 4,9.10 11 10 9 3,6.10 7 1,9.10 7 1if = 1milisec 15,53 let 11,57 dní 10,00 hodin 5,28 hodin Stromové třídění není vhodné pro malý počet záznamů (n)! získat více informací z předchozích porovnání klíčů dojde ke zvýšení složitosti jednotlivých kroků třídění efektivnější organizování získaných informací potřeba nalézt vhodnější strukturu stromu odstranění prázdných vrcholů stromová struktura s n vrcholy např. Heapsort, B stromy, 21