Cvičení 10 (ze dne 22. 4. 2003):

Navrhněte algoritmus, který pro zadanou rostoucí posloupnost kladných celých čísel vytiskne vzestupně uspořádané prvky množiny součtů dvojic čísel z posloupnosti. Např. pro zadanou posloupnost 1, 2, 3, 11 algoritmus vytiskne 2, 3, 4, 5, 6, 12, 13, 14, 22. Paměťové nároky musí být nižší než O(N^2).
Řešení: Na cvičení jsme si vysvětlili, že si stačí pamatovat N součtů a kvůli snadnějšímu výběru a zařazování nových součtů se hodí mít je uspořádány do haldy. Program používající haldu reprezentovanou polem indexů je zde.

Domácí úkol: Napište program pro třídění pole použitím haldy.


Zpět, Domů