1.
a) Napisz funkcję rekurencyjną realizującą sortowanie tablicy liczbowej przez scalanie: void ScalanieSort(int A[], int lewy, int prawy) gdzie lewy i prawy oznaczają indeksy ograniczające sortowany fragment tablicy A.
b) Napisz program, który posortuje niemalejąco tablicę n-elementową.
c) Uzupełnij program tak, aby podał liczbę rekurencyjnych wywołań funkcji ScalanieSort przy sortowaniu tablicy n-elementowej (pierwsze wywołanie, dla całej tablicy, ma postać: ScalanieSort(A, 0, n-1)).
Wejście
Pierwszy wiersz standardowego wejścia zawiera jedną liczbę całkowitą dodatnią Z określającą liczbę testów. Pierwszy wiersz każdego testu zawiera liczbę całkowitą dodatnią ni (1 <= ni <= 1000) określającą liczbę elementów ciągu do posortowania. Elementy te, liczby całkowite z przedziału [-10^6 ; 10^6 ] oddzielone pojedynczymi spacjami, podane są w drugim wierszu testu.
Wyjście
Standardowe wyjście powinno zawierać po dwa wiersze odpowiedzi dla każdego testu. Pierwszy wiersz powinien zawierać oddzielone pojedynczymi spacjami posortowane niemalejąco liczby podane na wejściu. Drugi wiersz powinien zawierać informację o liczbie wywołań funkcji ScalanieSort w poniższym formacie:
Liczba wywolan funkcji ScalanieSort = xx
Przykład
Dla danych:
2
10
8 3 4 2 9 0 1 7 6 5
6
123 88 331 647 1967 -753
Poprawny wynik może mieć postać
0 1 2 3 4 5 6 7 8 9
Liczba wywolan funkcji ScalanieSort = 19
-753 88 123 331 647 1967
Liczba wywolan funkcji ScalanieSort = 11
2.
a) Napisz funkcję rekurencyjną realizującą sortowanie szybkie:
void QuickSort(int A[], int lewy, int prawy)
gdzie lewy i prawy oznaczają indeksy ograniczające sortowany fragment tablicy A.
b) Napisz program, który posortuje niemalejąco tablicę n-elementową.
c) Uzupełnij program tak, aby podał liczbę rekurencyjnych wywołań funkcji QuickSort przy sortowaniu tablicy n-elementowej (pierwsze wywołanie, dla całej tablicy, ma postać: QuickSort(A, 0, n-1)).
Wejście
Pierwszy wiersz standardowego wejścia zawiera jedną liczbę całkowitą dodatnią Z określającą liczbę testów. Pierwszy wiersz każdego testu zawiera liczbę całkowitą dodatnią ni (1 <= ni <= 1000) określającą liczbę elementów ciągu do posortowania. Elementy te, liczby całkowite z przedziału [-10^6 ; 10^6 ] oddzielone pojedynczymi spacjami, podane są w drugim wierszu testu.
Wyjście
Standardowe wyjście powinno zawierać po dwa wiersze odpowiedzi dla każdego testu. Pierwszy wiersz powinien zawierać oddzielone pojedynczymi spacjami posortowane niemalejąco liczby podane na wejściu. Drugi wiersz powinien zawierać informację o liczbie wywołań funkcji QuickSort w poniższym formacie:
Liczba wywolan funkcji QuickSort = xx
Przykład
Dla danych:
2
10
8 3 4 2 9 0 1 7 6 5
6
123 88 331 647 1967 -753
Poprawny wynik może mieć postać
0 1 2 3 4 5 6 7 8 9
Liczba wywolan funkcji QuickSort = 19
-753 88 123 331 647 1967
Liczba wywolan funkcji QuickSort = 11