Řadicí algoritmy autor: Tadeáš Berkman
Obsah Obecné Časová složitost Dělení Zástupci s příklady Selection sort Bubble sort Insertion sort Quicksort Merge sort Zdroje
Řadicí algoritmy obecně Méně výstižně též třídicí algoritmy Algoritmy řadí soubor dat (obvykle pole) podle zadaných kritérií (klíče) Řazení velmi častou úlohou, součást mnoha složitějších algoritmů → vyvinuto mnoho algoritmů s cílem co největší efektivity (časové a paměťové) obsah
Časová složitost Důležitá charakteristika algoritmu Zjišťuje, jakým způsobem se algoritmus chová v závislosti na velikosti vstupních dat Nejlepší možná je O(n) obsah
Dělení Řazení Vnitřní (v operační paměti musí být všechna data) Vnější Stabilita (na základě pořadí více prvků se stejným klíčem) Stabilní (pořadí zachováno) Nestabilní (pořadí se může změnit) obsah
Dělení Přirozenost Základní myšlenka Přirozené (částečně seřazená data seřadí rychleji) Nepřirozené Základní myšlenka Výběr Vkládání Záměna Slučování obsah
Zástupci - srovnání obsah název časová složitost dodatečná paměť stabilní přirozený metoda minimální průměrná maximální selection sort O(n2) O(1) ne výběr bubble sort O(n) ano záměna insertion sort vkládání quicksort O(n log n) merge sort slučování obsah
Selection sort (řazení výběrem) Jednoduchý Snadná implementace Časová složitost O(n2) → použitelný jen pro malé objemy dat Vybere nejmenší prvek, prohodí ho s prvním, najde druhý nejmenší, prohodí s druhým, atd. Na stejném principu řadí data člověk obsah
Bubble sort (bublinkové řazení) Jednoduchý, málo efektivní – časová složitost O(n2) Stabilní, přirozený Opakovaně prochází seznam a pokud nejsou dva sousedící prvky ve správném pořadí, prohodí je Název podle průběhu, kdy prvky s vyšší hodnotou probublávají na konec obsah
Insertion sort (řazení výběrem) Jednoduchý Pomalejší než pokročilejší algoritmy jako quicksort a merge sort, ale rychlejší než ostatní O(n2) algoritmy Stabilní, přirozený Online algoritmus (dokáže řadit data, jak postupně přicházejí na vstup) Princip podobný bubble sortu, víc v příkladu obsah
Quicksort (rychlé řazení) Průměrná časová složitost O(n log n) – nejlepší možná Z pole vybere jeden prvek (pivot), prvky pole rozdělí na část menší a část větší než pivot, obě části se rekurzivně řadí stejným postupem Důležitým bodem volba pivota (v optimálním případě by měly být obě části pole stejně velké) obsah
Merge sort (řazení slučováním) Průměrná i nejhorší časová složitost O(n log n), ale v reálném použití bývá pomalejší než např. quicksort Nevýhodou je potřeba pole o velikosti n (větší nároky na paměť) Rozdělí množinu dat na dvě podmnožiny, ty seřadí a spojí zpět dohromady obsah
Zdroje, odkazy http://cs.wikipedia.org/ http://en.wikipedia.org/ http://www.algoritmy.net/ http://www.sorting-algorithms.com/ http://sci.felk.cvut.cz/~xsimecek/ruzicka-sorty.pdf Další materiály: http://laman.webz.cz/razeni.html autor: Tadeáš Berkman