Třídící algoritmy

Zabývali jsme se algoritmy vnitřního třídění. Konkrétně šlo o:

  1. 1) bogosort, který je hloupý, ale velice jednoduchý. V pascalu ho snadno implementujeme s použitím procedur randomize a funkce random. Je třeba vymyslet způsob, jak generovat náhodnou permutaci. Jedna alternativa (pomocí generování náhodných prvků do pole) byla předvedena na cvičení.

    Pokud ale umíme pro dané N převádět pořadové číslo permutace na permutaci N prvků, postačí nám generovat náhodné číslo mezi 0 a N!. Tento způsob je rychlejší, protože používá náhodný generátor pouze 1x.

  2. 2) quicksort jsme neprogramovali, ale jeho rekurzivní verze byla celkem podrobně rozebrána na tabuli. Mimo jiné jsme diskutovali o několika způsobech, jak se volí tzv. pivot (první prvek, náhodný prvek, průměr z několika náhodných prvků, medián).

Dolní odhad pro třídění

Procházeli jsme také důkaz dolního odhadu pro rychlost třídících algoritmů založených na porovnávání prvků. Následující video obsahuje návod na konstrukci porovnávacího stromu, na jehož výšce závisí minimální počet kroků libovolného porovnávacího třídícího algoritmu v nejhorším případě.


Podrobný výpočet odhadu provedený na cvičení je zde:

Domácí úkol

Jako domácí úkol byla zadána úloha: Doplnění magického čtverce.

Kdyby někomu magické čtverce učarovaly, může pátrat po detailech dle libosti.