Przejdź do treści

Sklejanie

Przeanalizuj poniższy algorytm i wykonaj zadania.

Pseudokod

Funkcja sort(A, pocz, kon):
    1. Jeżeli A[pocz] > A[kon], to:
        2. Zamień(A[pocz], A[kon])
    3. Jeżeli kon - pocz + 1 > 2:
        4. t := (kon - pocz + 1) div 3
        5. sort(A, pocz, kon - t)
        6. sort(A, pocz + t, kon)
        7. sort(A, pocz, kon - t)

Info

Zamień zamienia dwie zmienne wartościami.

Info

div oznacza dzielenie całkowite.

Zadanie 1

Narysuj drzewo wywołań rekurencyjnych oraz przedstaw postać tablicy \(A\) po każdym wywołaniu funkcji Zamień dla danych:

  • \(A[1..3] = [5, 1, 3]\)
  • \(pocz = 1\)
  • \(kon = 3\)

Zadanie 2

Narysuj drzewo wywołań rekurencyjnych oraz przedstaw postać tablicy \(A\) po każdym wywołaniu funkcji Zamień dla danych:

  • \(A[1..4] = [5, 1, 3, 4]\)
  • \(pocz = 1\)
  • \(kon = 4\)

Zadanie 3

Uzupełnij poniższą tabelkę podając liczbę wywołań funkcji sort (łącznie z początkowym wywołaniem) dla dowolnej zawartości tablicy \(A\) oraz podanych wartości \(pocz\) i \(kon\).

A pocz kon Liczba wyników
[1..1] 1 1 1
[1..2] 1 2 1
[1..3] 1 3
[1..4] 1 4