Programowanie proceduralne
Laboratorium 5-6 – Algorytmy sortowania, pliki nagłówkowe.
1. Zaimplementuj funkcję znajdującą największy element w tablicy n-elementowej.
Funkcja powinna pobierać jako argumenty: tablicę liczb rzeczywistych oraz liczbę jej elementów. Funkcja powinna zwracać wartość elementu największego. Napisz program demonstrujący działanie tej funkcji.
2. Zaimplementuj funkcje:
wyznaczającą indeks największego elementu w tablicy n-elementowej,
znajdującą element najmniejszy w tablicy n-elementowej,
wyznaczającą indeks najmniejszego elementu w tablicy n-elementowej.
Zademonstruj ich działanie w programie.
3. Zaimplementuj funkcję, która pobiera trzy argumenty: tablicę liczb rzeczywistych, liczbę elementów w tablicy, oraz zmienną całkowitą max_ind przekazywaną przez referencję. Funkcja powinna zwracać wartość elementu maksymalnego w tablicy, a wartość zmiennej powinna być ustawiona na indeks elementu maksymalnego. Napisz program demonstrujący działanie tej funkcji.
4. Rozważ zaimplementowane algorytmy wyznaczania indeksu elementu maksymalnego (minimalnego) dla tablic, w których jest więcej niż jeden element maksymalny (minimalny).
5. W ramach projektu Code∷Blocksa, przygotuj program demonstrujący działanie funkcji z zadania 1 i 2. Deklaracje funkcji powinny znaleźć się w pliku sort.h, natomiast definicje funkcji – każda w oddzielnym pliku źródłowym. Deklaracje funkcji z kolejnych zadań umieszczaj także w pliku nagłówkowym sort.h, a ich definicje w oddzielnych plikach.
6. Zaimplementuj funkcję swap, która we wskazanej tablicy liczb rzeczywistych zamienia miejscami dwa elementy (o podanych indeksach).
7. Przeanalizuj algorytm sortownia przez wybór. Zauważ, że dysponujesz funkcjami:
znajdującą element minimalny w tablicy i zamieniającą dwa elementy miejscami.
Zaimplementuj funkcję selectsort, która sortuje n-elementową tablicę liczb rzeczywistych, wykorzystując algorytm sortowania przez wybierania. Zademonstruj działanie funkcji w programie.
8. Przeanalizuj algorytm sortownia bąbelkowego. Zauważ, że dysponujesz funkcją zamieniającą dwa elementy tablicy miejscami. Zaimplementuj funkcję bubblesort, która sortuje n-elementową tablicę liczb rzeczywistych, wykorzystując algorytm sortowania bąbelkowego. Zademonstruj działanie funkcji w programie.
9. Przeanalizuj algorytm sortownia przez scalania. Zauważ, że przydatne będzie wydzielenie operacji scalania dwóch posortowanych fragmentów tablicy.
Zaimplementuj funkcję mergesort, która sortuje n-elementową tablicę liczb rzeczywistych, wykorzystując algorytm sortowania przez scalanie. Zwróć uwagę na konieczność alokacji dodatkowej pamięci. Zademonstruj działanie funkcji w programie.
10. Przeanalizuj algorytm sortownia szybkiego. Zauważ, że przydatne będzie wydzielenie operacji rozdzielania elementów dwa podzbiory. Zaimplementuj funkcję quicksort, która sortuje n-elementową tablicę liczb rzeczywistych, wykorzystując algorytm sortowania szybkiego. Zademonstruj działanie funkcji w programie.
Karol Tarnowski Wrocław, 2018