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.