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.