k |
Początkowa zawartość tablicy
A[1...2k]
|
Końcowa zawartość tablicy
A[1...2k]
|
2
|
[4, 3, 1, 2]
|
[1, 4, 3, 2]
|
2
|
[2, 3, 4, 1]
|
[1, 3, 2, 4]
|
3
|
[1, 2, 3, 4, 5, 6, 7, 8]
|
[.1, .2, 3, 4, 5, 6, 7, .8.1
|
3
|
[8, 7, 6, 5, 4, 3, 2, 1]
|
[.1, .8, 7, 6, 5, .4, 3, 2]
|
3
|
[4, 5, 6, 1, 8, 3, 2, 4]
|
[.1, .5, .4, .6, 2, 8, 3, 4]
|
Postarajmy się jednak zrobić trochę więcej: ustalić ideę podanego algorytmu; wiedzę tę wykorzystamy również przy rozwiązywaniu zadań 2 i 3.
Najpierw zauważmy, że po zakończeniu pętli „dla
i = 1,2,…,
k wykonuj” zmienna
n ma wartość 2
k.
W pierwszym obrocie pętli „
dopóki s <
n wykonuj” porównujemy
A[1] z
A[2],
A[3] z
A[4] itd.
Przy porównaniu
A[
i] z
A[
i+1] wykonujemy zamianę, gdy
A[
i]>
A[
i+1]. A zatem po pierwszym obrocie pętli w
A[1] znajduje się minimum z
A[1] i
A[2], w
A[3] znajduje się minimum
z
A[3] i
A[4], w
A[5] znajduje się minimum z
A[5] i
A[6] itd.
Po każdym obrocie pętli „
dopóki s <
n wykonuj” wartość
s zwiększa się dwukrotnie. Tak
więc przy drugim obrocie tej pętli wartość s będzie równa 2. Wówczas porównamy
A[1]
z
A[3] i, w przypadku gdy
A[1] >
A[3], dokonana zostanie zamiana tych elementów. W efekcie
w
A[1] znajdzie się minimum z czterech pierwszych elementów tablicy
A. Następnie porównamy
A[5] z
A[7], skutkiem czego w
A[5] znajdzie się minimum z
A[5],
A[6],
A[7],
A[8],
a więc minimum z kolejnych czterech elementów tablicy
A. Przeprowadzając analizę tak
dalej, dochodzimy do wniosku, że takie lokalne minima z grup kolejnych czwórek elementów
tablicy
A znajdą się w pierwszych elementach tych czwórek.
Co się stanie w kolejnych obrotach pętli „
dopóki s <
n wykonuj”? Łatwo sprawdzić, że wielkość grup będzie podwajana. Tak więc będziemy mieć do czynienia z grupami kolejnych 8
elementów, następnie — grupami kolejnych 16 elementów itd…. Minima z tych grup będą
zapamiętywane w pierwszych elementach grup. Zatem po kolejnych obrotach pętli w
A[1]
będą zapamiętane kolejno minima z pierwszych 2
i
elementów tablicy
A. W szczególności po
k-tym obrocie, a więc na zakończenie algorytmu, w
A[1] znajdzie się minimum ze wszystkich
elementów tablicy
A.