10.1 Řazení

Definice 10.1 (Problém řazení)

  • Vstup: Číslo $n$ a posloupnost čísel $A = a_1, a_2, \dots , a_n$.

  • Výstup: Taková permutace $A' = a'_1 , a'_2 , \dots , a'_n$ vstupní posloupnosti $A$, že platí $a' 1 \leq a'_2 \leq \dots ≤ a'_n$.

Například:

$n = 6, A = 23, 7, 19, 21, 5, 12, A' = 5, 7, 12, 19, 21, 23$.

  • Obecně: ze vstupní posloupnosti vytvořit posloupnost hodnot v předdefinovaném pořadí.

  • Existuje řada přístupů a algoritmů.

  • Fundamentální problém v informatice.

  • Implicitně budeme uvažovat algoritmy řadicí vzestupně.

10.1.1 Taxonomie algoritmů pro řazení

  1. Základní operace:

    1. Řazení založené na pouze binární operaci porovnání-a-prohození (Compare-And-Exchange).

    2. Řazení založené na jiné operaci.

  2. Paměťová náročnost:

    1. In-place algoritmy (potřebují $n + \text{polylog}(n)$ paměti).

    2. Out-of-place algoritmy.

  3. Stabilita

    1. Stabilní algoritmy (stejně velké prvky se nikdy neprohodí).

    2. Nestabilní algoritmy (stejně velké prvky se mohou prohodit).

  4. Citlivost na hodnoty prvků vstupní posloupnosti:

    1. Datově citlivé algoritmy (časová složitost závisí na hodnotách prvků)

    2. Datově necitlivé algoritmy (časová složitost nezávisí na hodnotách prvků).