(a) operaatiot: heap-insert(H,k) - lisää kekoon H avaimen k heap-min(H) - palauttaa keon H pienimmän avaimen heap-del-min(H) - poistaa ja palauttaa keon H pienimmän avaimen kekoehto: Ajatellaan kekoa binääripuuna. Kekoehto on kaksiosainen (1) kaikki lehdet ovat kahdella vierekkäisellä tasolla k ja k+1 s.e. tason k+1 lehdet ovat niin vasemmalla kuin mahdollista ja kaikilla k:ta ylempien tasojen solmuilla on kaksi lasta (2) jokaiseen solmuun talletettu avain on pienempi tai yhtäsuuri kuin solmun lapsiin talletetut avaimet organisointi muistiin: Taulukkona tasoittain, juuri indeksissä 1. Kohtaan i talletetun solmun vanhempi on kohdassa lattia(i/2), vasen lapsi 2i ja oikea lapsi 2i+1. heap-size(H) kertoo, kuinka monta taulukon paikkaa (alusta alkaen) kuuluu kekoon. operaatioiden toteutus: heap-insert(H,k) heap-size(H) kasvaa yhdellä, k menee kohtaan heap-size(H) taulukossa, minkä jälkeen ehdon (2) voimassaolo varmistetaan siirtämällä k:ta ylöspäin vaihtamalla se vanhempansa kanssa, kunnes vanhempi on pienempi tai yhtäsuuri kuin k tai k on keon juuri. heap-min(H) Palautetaan taulukon 1. alkio. heap-del-min(H) Otetaan muistiin taulukon 1. alkio (x). Keon viimeinen alkio y siirretään 1. alkion paikalle, keon koko pienenee yhdellä. (*) Tämän jälkeen ehdon (2) voimassaolo varmistetaan siirtämällä alkiota y alaspäin vaihtamalla se pienemmän lapsensa kanssa, kunnes lapset ovat vähintään yhtäsuuria kuin y tai y on lehti. (*) Lopuksi palautetaan x. aikavaativuus: jos keossa on n alkiota, heap-min on O(1) heap-insert ja heap-del-min ovat O(log n), koska pahimmassa tapauksessa kuljetaan keon lehdestä juureen tai toisinpäin, ja kekoehdon 1 perusteella keon korkeus on O(log n). (b) Maksimikeon kekoehto 2 on, että jokaiseen solmuun talletettu avain on suurempi tai yhtäsuuri kuin solmun lapsiin talletetut avaimet. Tällöin suurin alkio on juuressa. Operaatiot on ehkä hyvä nimetä tämän mukaan: heap-max ja heap-del-max. (c) Oletetaan, että on annettu taulukko A[1..m], jonka alkiot halutaan järjestää nousevaan suuruusjärjestykseen. Aluksi taulukosta tehdään maksimikeko saattamalla maksimikeon kekoehto 2 voimaan (ehto 1 pätee triviaalisti). Tämä tapahtuu suorittamalla jokaiselle alkiolle kohdasta lattia(m/2) kohtaan 1 yllä operaation heap-del-min selostuksesta merkkien (*) välissä oleva osuus maksimikeolle sovitettuna (lasten pitää siis olla korkeintaan yhtäsuuria kuin vanhempansa). Keon koko on aluksi m. Sitten poistetaan toistuvasti keon maksimialkio, kunnes keon koko on 1. Poistossa juuri ja keon viimeinen alkio vaihtavat paikkaa. Vaihdon jälkeen entinen juuri on oikealla paikalla taulukossa ja jää siihen. Keon kokoa pienennetään yhdellä ja valutetaan uusi juuri keossa alaspäin, jotta kekoehto 2 täyttyy. Kun keossa on jäljellä enää yksi alkio, taulukko on järjestyksessä. Aikavaativuus O(m log m) ((lattia(m/2) + m) * O(log m) = O(m log m)), tilavaativuus O(1). Pisteytys (max): (a) 5 (1 piste/kohta), (b) 1, (c) 1 (yhteensä 7 pistettä).