Třídění ve vnitřní paměti

Máme dánu posloupnost N čísel v nějakém poli P. Naším cílem je tuto posloupnost přeuspořádat tak, aby pro každé dva sousední prvky P[i] a P[i+1] platilo P[i] <e; P[i+1]. Přitom předpokládáme, že se celá posloupnost vejde do operační paměti.

Výše popsaný problém řeší algoritmy vnitřního třídění.

Quicksort

Jde o algoritmus založený na porovnávání prvků. Na cvičení jsme se zabývali jeho rekurzivní verzí (pseudokód):

quick(start,end,P)
// start - pocatecni index trideneho useku v P 
// end - koncovy usek trideneho useku v P
// P - tridena posloupnost
0. if start = end then exit; // jeden prvek netreba tridit
1. vyber hodnotu X (pivot) mezi prvky P
2. rozdel prvky P do dvou useku:
  A - prvky z P, ktere jsou mensi nez X
  B - prvky z P, ktere jsou vetsi/rovne X
// setrid rekurzivne usek A
3. quick(A.start,A.end,P)
// setrid rekurzivne usek B
4. quick(B.start,B.end,P)

Programovali jsme funkci, která měla realizovat 2. krok výše popsaného algoritmu. Také jsme diskutovali několik způsobů výběru pivota (náhodný index, medián z několika vybraných prvků).

Grafika v pascalu

Všechny programy, které jsme během semestru programovali pracují pouze s textovým vstupem/výstupem. To ovšem neznamená, že by v Pascalu nešlo naprogramovat i něco zábavnějšího. Pro zajímavější výstup můžeme využít následující programové jednotky:

  • Crt - umožňuje práci v rozšířeném textovém režimu. Nejmenší jednotkou, kterou můžeme pomocí této jednotky kontrolovat je znak. Obrazovku lze pak chápat jako pole znaků.
  • Graph - umožňuje práci v grafickém režimu, kdy můžeme kontrolovat jednotlivé pixely.

Dokumentace obou programových jednotek (např. seznam funkcí, které poskytují) je součástí vestavěné nápovědy IDE Turbo Pascalu. Online dokumentace v češtině je obsažena v závěrečných kapitolách elektronických skript JČU.

Na cvičení byl předveden program využívající jednotku Crt k simulaci barevného sněhu a jednoduchý program, demonstrující základní použití jednotky Graph. Proměnnou PathToDriver v proceduře Initialize je třeba nastavit tak, aby obsahovala cestu do adresáře, kde jsou uloženy příslušné grafické drivery (typicky soubory s příponou .BGI nebo .CHR, které má standartní instalace Turbo Pascalu uložené v adresáři BGI).

Domácí úkol

Úloha Rozklad na součet byla zadána za 30 bodů. Rekurze není nikdy dost.