W zadaniu należy uzupełnić zasugerowane drzewo wywołań rekurencyjnych wykonywanych
przez algorytm
uporządkuj. Zgodnie z analizą algorytmu, jaką przedstawiono w opisie poprzedniego zadania, algorytm ten zawsze dzieli daną tablicę
T[1 . .
n] na dwie części:
T[1..k], T[݇k + 1..n],
gdzie
k jest równe
n/2. Ponieważ w specyfikacji algorytmu powiedziane jest, że
n =2
m,
więc otrzymane części są równoliczne i zawierają dokładnie po
k =2
m – 1 elementów. To
pozwala na rekurencyjne wywołanie algorytmu
uporządkuj dla obu części, a w konsekwencji
uzasadnia poprawność algorytmu. Aby rozwiązać zadanie, wystarczy zatem dzielić daną tablicę na połowy. Z algorytmu można łatwo odczytać, że dla tablic jednoelementowych (
n =
1) podział na części już nie występuje. Stąd w rozwiązaniu należy drzewo zakończyć na poziomie, w którym we wszystkich wierzchołkach znajdują się tylko pojedyncze liczby.