1. Klasówka 2015/16 (19.12.2015)#

Zadanie 1 [5 punktów]#

Słowa kluczowe: optymalne porównania
  1. [2 punkty] Zaproponuj algorytm, optymalny ze względu na liczbę porównań, sortujący ciąg x[1], x[2], …, x[7], parami różnych liczb całkowitych oraz taki, że dla każdego i = 1, 2, 3, x[i] < x[2i] oraz x[i] < x[2i+1].

  2. [3 punkty] Udowodnij optymalność swojego rozwiązania.

Zadanie 2 [6 punktów]#

Słowa kluczowe: kopiec

Ile wynosi maksymalna liczba zamian w fazie budowy kopca (od dołu) dla 2-uporządkowanego ciągu a[1..n], gdzie \(n = 2^k-1\), dla pewnego k > 0? Odpowiedź uzasadnij.

Zadanie 3 [9 punktów]#

Słowa kluczowe: sortowanie

Rozważamy dynamicznie zmieniający się ciąg \(A=\langle a_1, a_2, \ldots, a_n\rangle\), parami różnych n liczb całkowitych. Na ciągu A dozwolona jest jedyna operacja NaPoczątek(i), \(1\le i\le n\), która przesuwa element ai na początek A.

Przykład Dla A=<4,1,3,5,2>, po wykonaniu NaPoczatek(3) dostajemy A=<3,4,1,5,2>.

Interesuje nas ciąg operacji NaPoczątek o minimalnej długości, których wykonanie posortuje A. Nazwijmy go minimalnym ciągiem sortującym.

  1. [3 punkty] Zaprojektuj algorytm, który w czasie O(n) wyznacza pierwszy element minimalnego ciągu sortującego.

  2. [2 punkty] Zaprojektuj efektywny algorytm wyznaczający cały minimalny ciąg sortujący.

  3. [4 punkty] Udowodnij poprawność swoich rozwiązań.

Dokonaj analizy złożoności czasowej zaproponowanych algorytmów.