Nämä tehtävät ovat esimerkkjä ByTheMark-palvelusta löytyvästä oppimateriaalista. Ne on tarkoitettu itseopiskeluun. Jos haluat lisää tehtäviä tai seurata omaa edistymistäsi,
luo ByTheMark Personal-demotunnus. ByTheMark Personal on maksuton yksityisille henkilöille tarkoitettu palvelu tietorakenteiden ja algoritmien opiskeluun.
|
Piilota ohjeetNäytä ohjeet Piilota pseudokoodiNäytä pseudokoodi
|
Etsi aineiston k:nneksi suurin alkio seuraavasti. Lisää annetut alkiot yksitellen järjestyksessä oheiseen kekoon. Poista lopuksi keosta k=3 kertaa pienin alkio. Palauta kekoehto "isä pienempi kuin lapsi" voimaan jokaisen operaation jälkeen.
Lisäyksessä (Heap-Insert) vedä ja pudota alkiot annetussa järjestyksessä kekorakenteen tyhjiin solmuihin. Palauta kekoehto voimaan kunkin lisäyksen jälkeen. Poistossa (Heap-Extract-Min) valitse solmu (ei avainta) ja poista siinä oleva avain Delete-painikkeella. Huomaa, että tehtävässä alkioiden vedä ja pudota -toiminnallisuus vaihtaa lähtö- ja kohdesolmun alkiot keskenään. Näin ollen voit joko poistaa juuressa olevan avaimen ja vaihtaa sen tilalle taulukon viimeisen avaimen tai tehdä vaihdon ensin ja poistaa taulukon viimeisen avaimen. Molemmissa tapauksissa taulukon koko pienenee yhdellä.
|
Algorithm 1 Select(Stream of keys, k)
- for each key in Stream of keys do
- Heap-Insert(A, key)
- end for
- for i ← 1 to k do
- r = Heap-Extract-Min(A)
- end for
- return r
Algorithm 2 Heap-Insert( A, key)
- heap-size[A] ← heap-size[A] + 1
- i ← heap-size[A]
- while i > 1 and A[Parent(i)] > key
- do A[i] ← A[Parent(i)]
- i ← Parent(i)
A[i] ← key
-
Algorithm 3 Heap-Extract-Min( A)
- min ← A[1]
- A[1] ← A[heap-size[A]]
- heap-size[A] ← heap-size[A] - 1
- Min-Heapify(A, 1)
- return min
Algorithm 4 Min-Heapify(A, i)
- l ← Left-child-index(i)
- r ← Right-child-index(i)
-
- if l ≤ heap-size[A] and A[l] <
A[i] then
- smallest ← l
- else
- smallest ← i
- end if
-
- if r ≤ heap-size[A] and A[r] <
A[smallest] then
- smallest ← r
- end if
-
- if smallest ≠ i then
- Swap(A[i],A[smallest])
- Min-Heapify(A, smallest)
- end if
|
|