Do wykonania będą dwa zadania (pierwsze typu 1-3 oraz drugie typu 4).
Dalej podano przykłady zadań.
1. Posortuj algorytmem Quicksort dany ciąg 7 liczb, pokazując kolejne przekształcenia w ciągu. Pokaż za pomocą drzewa algorytmu fazę dzielenia tablicy, że operacja ta jest oszacowana jako (n), gdzie n jest liczbą elementów.
2. Weź kolejnych 7 liczb z danego posortowanego ciągu. Wykonaj drzewa algorytmów dla wyszukiwania sekwencyjnego, binarnego z powtórzeniami i bez powtórzeń. Pokaż przebieg algorytmów wyszukiwania sekwencyjnego (indeks), binarnego z powtórzeniami (kolejne przedziały) oraz bez powtórzeń (kolejne przedziały) przy wyszukiwaniu wartości równej liczbie o indeksie równym 6 oraz wartości -1 oraz 30. Ostatnie dwie liczby nie znajdują się w ciągu. Na podstawie drzewa algorytmu i kodu źródłowego tych funkcji należy oszacować
czas działania tych algorytmów.
3. Wykonaj drzewo algorytmu dla jednego przebiegu łączenia serii w sortowaniu wielokierunkowym i wykaż, że ma złożoność O(n), gdzie n jest liczbą elementów rozłożonych na trzech plikach.
4. Przekształć do postaci rekurencyjnej daną pętlę, która drukuje na ekranie zawartość tablicy:
//---
#include <stdio.h>
void wyswietl1(int tab[], int ile);
void wyswietl2(int tab[], int ile);
//--- void main(int argc, char* argv[])
{ int tab[]={1,2,3,4,5,6,7,8,9} , ile=9;
wyswietl1(tab, ile);
wyswietl2(tab, ile);
}//--- void wyswietl1(int tab[], int ile)
{ for (int i =ile-1; i>=0; i--) printf("tab[%d]=%d, ", i, tab[i]);
printf("\n");
}
void wyswietl2(int tab[], int ile) { if (ile>0)
{ printf("tab[%d]=%d, ", ile,tab[--ile]);
wyswietl2(tab,ile); } else
printf("\n");
}