Search
V tomto cvičení se kromě psaní testu budeme věnovat abstraktním datovým typům (ADT). V předešlých cvičeních jste se seznámili například s frontou a zásobníkem.
Dnes si ukážeme abstraktní datový typ prioritní fronta. Vyzkoušíme si základní implementaci prioritní fronty lineárním vyhledáváním.
V domácím úkolu pak budeme implementovat prioritní frontu binární haldou.
Jak jste již v tomto semestru zjistili, je třeba dobře plánovat svůj čas, abyste dostáli svým povinostem.
Jakmile máme úkolů mnoho, tak se hodí nějaký úkolníček nebo chcete-li ToDoList.
Úkoly si můžeme ukládat do fronty. Jistě jste již slyšeli, že fronta je tzv. FIFO, co to znamená? V jakém pořadí budeme úkoly z fronty odebírat?
Jednotlivé úkoly mají svoji prioritu. Ač je určení si priorit v tomto případě stěžejní, my se určením priorit v PR1 nebudeme zatěžovat. Předpokládejme, že priority jsou určeny. Nyní je potřeba úkoly zpracovat v pořadí podle priority - samozřejmě od nejvyšší priority!
Mohli bychom úkoly ve frontě seřadit. Úkoly ale obvykle přibývají dříve než stihneme všechny předchozí zpracovat (http://9gag.com/gag/aQqLVK8). Seřadit frontu po přidání nového prvku je možné, ale tento přístup pak z každého přidání prvku dělá výpočetně náročnou operaci.
Ukážeme si k čemu by nám mohl být abstraktní datový typ prioritní fronta. Zkusíme si, že prioritní frontu můžeme implementovat různými způsoby. A ne všechny způsoby budou stejně efektivní.
int initTaskCount = 10000; boolean verbose = false;
lab12