Wskazówka:
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], Tk + 1..n],
gdzie k jest równe n/2. Ponieważ w specyfikacji algorytmu powiedziane jest, że n =2m, więc otrzymane części są równoliczne i zawierają dokładnie po k =2m – 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.
Powrót do pytań