<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.512.cz/skins/common/feed.css?301"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>https://www.512.cz/index.php?feed=atom&amp;target=109.72.14.213&amp;title=Speci%C3%A1ln%C3%AD%3AP%C5%99%C3%ADsp%C4%9Bvky%2F109.72.14.213</id>
		<title>FAV wiki - Příspěvky uživatele [cs]</title>
		<link rel="self" type="application/atom+xml" href="https://www.512.cz/index.php?feed=atom&amp;target=109.72.14.213&amp;title=Speci%C3%A1ln%C3%AD%3AP%C5%99%C3%ADsp%C4%9Bvky%2F109.72.14.213"/>
		<link rel="alternate" type="text/html" href="https://www.512.cz/index.php?title=Speci%C3%A1ln%C3%AD:P%C5%99%C3%ADsp%C4%9Bvky/109.72.14.213"/>
		<updated>2026-10-22T05:04:29Z</updated>
		<subtitle>Z FAV wiki</subtitle>
		<generator>MediaWiki 1.17.0</generator>

	<entry>
		<id>https://www.512.cz/index.php?title=Algoritmy_%C5%99azen%C3%AD_O(N_logN)</id>
		<title>Algoritmy řazení O(N logN)</title>
		<link rel="alternate" type="text/html" href="https://www.512.cz/index.php?title=Algoritmy_%C5%99azen%C3%AD_O(N_logN)"/>
				<updated>2016-06-04T07:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;109.72.14.213: /* Řazení haldou (heapsort) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// přidat ukázky&lt;br /&gt;
&lt;br /&gt;
Společné pro všechny: Řadíme stromem.&lt;br /&gt;
&lt;br /&gt;
== Řazení haldou (heapsort) ==&lt;br /&gt;
&lt;br /&gt;
Na začátku je neseřazené pole. Postupně obnovujeme nad tímto polem haldu pro první dva, tři, čtyři atd. prvky, až&lt;br /&gt;
máme na poli vytvořenu haldu. Následně zaměníme nejvyšší prvek (vyjmeme ho) s posledním a obnovíme&lt;br /&gt;
vlastnost haldy na n−1 prvcích. Obnovení haldy je O(log n) a obnovujeme po každém výběru, tedy O(n log2n) &lt;br /&gt;
To opakujeme až zbude jednoprvková halda a celé pole je seřazené. Nestabilní (složitost závisí na vstupních datech).&lt;br /&gt;
&lt;br /&gt;
V kostce: na poli uděláme haldu a max prvky vyměňujeme s posledními prvky haldy a haldu obnovujeme.&lt;br /&gt;
&lt;br /&gt;
Hezká vizualizace: http://varkor.com/mathematics/heapsort/?0,1,1,2,3,5,8,13,21,34,55,89,144,233&lt;br /&gt;
&lt;br /&gt;
== Shellovo řazení (shellsort) ==&lt;br /&gt;
&lt;br /&gt;
Posloupnost rozdělíme na podposloupnosti s krokem h (každý h-tý počínaje prvním, počínaje druhým až&lt;br /&gt;
počínaje h − 1-ním), které nezávisle seradíme vkládáním (insertsortem). Následne snižujeme hodnotu h a&lt;br /&gt;
provádíme totéž až do serazení s h = 1. Prvky daleko od své výsledné pozice se k ní dostanou v menším&lt;br /&gt;
počtu kroků, než u obyčejného insertsortu.&lt;br /&gt;
&lt;br /&gt;
* Shell - počátecní h = polovina délky pole, snížení vydělením dvěma&lt;br /&gt;
* Knuth - posloupnost 3i + 1, počáteční h = její prvek v nejbližší třetině délky pole&lt;br /&gt;
&lt;br /&gt;
Jednoduchý a efektivní algoritmus, složitá analýza, nestabilní.&lt;br /&gt;
&lt;br /&gt;
V kostce: rozdělení do stromu podle kroku (třeba na osminy), insertsort větví, a pak insertsort čtvrtin, polovin, konec&lt;br /&gt;
&lt;br /&gt;
Poměrně zajímavě udělaná ukázka z kartama: http://www.youtube.com/watch?v=QG8hs0wqmqk&lt;br /&gt;
&lt;br /&gt;
== Řazení dělením (splitsort, quicksort) ==&lt;br /&gt;
&lt;br /&gt;
Určíme prvek, jehož hodnota bude rozdělovat pole (pivot). Procházíme z obou stran pole a menší hodnoty&lt;br /&gt;
vpravo prohazujeme s vetšími vlevo, až se oba průchody potkají. Na tuto pozici přesuneme pivot - vlevo jsou&lt;br /&gt;
hodnoty menší, vpravo vetší. Totéž provedeme s částí pole vlevo od pivotu i vpravo od nej. Rekurze končí,&lt;br /&gt;
je-li předán pouze jeden prvek k seřazení. Nejčasteji se pivot určuje jako krajní prvek pole (nezasahuje pak&lt;br /&gt;
do procesu dělení). Lze použít zásobník místo rekurze. Snadno implementovatelné, nestabilní.&lt;br /&gt;
&lt;br /&gt;
V kostce: rozdělení do stromu podle pivotů (prvek velikostně cca uprostřed podstromu, ideálně medián, ale může být i náhodný), &lt;br /&gt;
v každém podstromu vzájemně vyměníme větší a menší prvky než pivot.&lt;br /&gt;
&lt;br /&gt;
Výukové videjko: http://www.youtube.com/watch?v=y_G9BkAm6B8&lt;br /&gt;
&lt;br /&gt;
== Řazení slucováním (mergesort) ==&lt;br /&gt;
&lt;br /&gt;
Pole je rekurzivně rozdělováno na poloviny. Dojdeme až na úroveň dvojic prvku, které seřadíme (sloučíme).&lt;br /&gt;
O úroven výše opět po dvojicích sloučíme (kopírujeme vždy menší prvek z obou polí a posuneme se za nej)&lt;br /&gt;
a postupujeme až sloučíme obě poloviny původního pole. Je to nejčasteji používaná metoda a je stabilní.)&lt;br /&gt;
&lt;br /&gt;
V kostce: jako když mícháme karty - 2 balíčky a děláme [[Soubor:Mergesort.jpg]]  &lt;br /&gt;
???????&lt;br /&gt;
&lt;br /&gt;
. Procházíme 2 podstromy a řadíme posunem &lt;br /&gt;
2 indexů, jeden v každém podstromu, a vždy zapíšeme větší prvek pod jedním z indexů, který posuneme&lt;br /&gt;
&lt;br /&gt;
Bezva video - http://www.youtube.com/watch?v=GCae1WNvnZM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nestabilní metody lze &amp;quot;zestabilnit&amp;quot; například zpřeházením dat na vstupu.&lt;br /&gt;
&lt;br /&gt;
Radix sort =???&lt;br /&gt;
[[Kategorie:fav-kiv-bzinf]]&lt;/div&gt;</summary>
		<author><name>109.72.14.213</name></author>	</entry>

	<entry>
		<id>https://www.512.cz/index.php?title=Doln%C3%AD_omezen%C3%AD_pro_porovn%C3%A1vac%C3%AD_%C5%99azen%C3%AD</id>
		<title>Dolní omezení pro porovnávací řazení</title>
		<link rel="alternate" type="text/html" href="https://www.512.cz/index.php?title=Doln%C3%AD_omezen%C3%AD_pro_porovn%C3%A1vac%C3%AD_%C5%99azen%C3%AD"/>
				<updated>2016-06-04T06:56:56Z</updated>
		
		<summary type="html">&lt;p&gt;109.72.14.213: Informace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Celkem HC otázka, asi nejtěžší z PPA, kvůli matematice, kterou my programátoři moc nemusíme (kdo říká, že to není pravda, tak lže sám sobě, nebo neumí programovat s tím, co je k dispozici a vše si musí do podrobna analyzovat)&lt;br /&gt;
&lt;br /&gt;
Zkoumejme dolni omezeni počtu porovnani T(n) pro porovnávaci algoritmy řazení.&lt;br /&gt;
&lt;br /&gt;
[[Soubor:Dolni-omezeni.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Předpokladejme, že všechny prvky posloupnosti a1, a2, ..., an jsou různé. Porovnavací řazeni můžeme znázornit rozhodovacim stromem. Ve vnitřních vrcholech jsou prvky, ktere algoritmus porovná a v listech je permutace všech prvků původni posloupnosti, ktera je seřazena.&lt;br /&gt;
&lt;br /&gt;
Přiklad rozhodovaciho stromu pro řazeni vkladanim tři prvků:&lt;br /&gt;
Jakykoliv 100% správný algoritmus (brutální síla) musi vytvořit každou z n! permutací prvků původní posloupnosti a zjistit, která je seřazená. Každou z takových permutací umístíme do stromu, ve kterém je v kořenech naznačeno porovnání, kterým se k permutacím dostaneme.&lt;br /&gt;
&lt;br /&gt;
Nejhoršim připadem počtu porovnani vykonanych algoritmem řazeni je nejdelši cesta od kořene stromu k listu, je tedy rovna vyšce stromu T(n) = h . &lt;br /&gt;
&lt;br /&gt;
Nyní musíme najít dolní omezení všech rozhodovacích stromů. Nechť rozhodovaci strom o výšce h má l  listů, potom l = 2h (binární strom má maximálně 2h listů). Současně listů musi byt alespoň tolik, kolik je permutaci, tedy n! = l. &lt;br /&gt;
Potom n! = l = 2h a po logaritmování (zjištění délky cesty, každá vrstva x grafu má 2x možných cest (2x listů), takže číslo vrstvy a tedy i délka ke kořeni je funkce inverzní, tedy log2x)&lt;br /&gt;
&lt;br /&gt;
	 log2 (n!) = log2 2h = h log22 = h * 1 = h = počet porovnání, kterým se dostneme k permutaci&lt;br /&gt;
&lt;br /&gt;
Použitim aproximace (n/e)n = n! je&lt;br /&gt;
&lt;br /&gt;
log2(n!)=n * log2 (n/e) = log2 n- n* log2 e,&lt;br /&gt;
&lt;br /&gt;
čim dostavame dolni omezeni pro nejhorši připad Ω(n*log2 n). (n * konstanta = n)&lt;br /&gt;
&lt;br /&gt;
Protože pro řazeni haldou a slučovanim jsou shora omezeny časem vypočtu Ω(n*log2 n), jsou tato řazeni asymptoticky optimalni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''JE TO ŠPATNĚ !!!!!!!!!!!!!!! V TEXTU NEJSOU VIDĚT INDEX h^2 viz.: [http://www.kiv.zcu.cz/~netrvalo/vyuka/ppa2-11/ekniha/online/HTML/54/default.htm]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:fav-kiv-bzinf]]&lt;/div&gt;</summary>
		<author><name>109.72.14.213</name></author>	</entry>

	</feed>