- Język programowania: Rust
- Opis projektu oraz sprawozdanie: Markdown
- Podstawowy element sortowanych tablic: 4 bajtowa liczba całkowita (
i32
/int
). - Dodatkowo rozpatrywane typy danych:
char
,double
,float
. - Sortowanie tablic są alokowane dynamicznie.
- Dla konkretnego rozmiaru tablicy, pomiar czasu sortowania należy dokonać wielokrotnie (np. 100 razy, przy czym za każdym razem są generowane nowe dane).
- Badania są przeprowadzone dla: 7 reprezentatywnych rozmiarów tablic (np. 10000, 20000, 100000, ... lub 100000, 200000, 400000, 800000, ...).
- Pomiar zostaje dobrany w taki sposób, aby sortowanie zajęło czas liczony na poziomie
ms
lub więcej. - Pomiar czasowy uwzględnia wyłącznie czas sortowania tablicy.
- Rozpatrywane przypadki szczególne:
- tablica całkowicie losowa
- tablica posortowana rosnąco
- tablica posortowana malejąco
- tablica posortowana w
33%
- tablica posortowana w
66%
- Dodatkowa funkcjonalność programu: możliwość sprawdzenia poprawności zaimplementowanych algorytmów sortowania (wczytanie danych z pliku i wyświetlenia tablicy przed i po sortowaniu)
-
Utworzenie dynamicznej tablicy na podstawie danych zapisanych w pliku tekstowym (
data.csv
). -
Wyświetlanie na ekranie tablicy przed sortowaniem.
-
Wyświetlanie na ekranie tablicy po sortowaniu.
-
Utworzenie
menu
programu umożliwiające:- wczytanie tablicy z pliku o zadanej nazwie.
- wygenerowanie tablicy z pliku o zadanym rozmiarze zawierające losowe wartości (program ma zapytać o rozmiar tablicy).
- wyświetlenie ostatnio utworzonej tablicy na ekranie (wygenerowanej lub wvzytanej)
- uruchomienie wybranego algorytmu na ostatnio utworzonej tablicy (do uruchomienia algorytmu używamy kopii utworzonej tablicy, program powinien umożliwiać testowanie algorytmów dla tych samych danych)
- wyświetlanie posortowanej tablicy na ekranie.
-
Menu powinno zostać rozszerzone o własne opcje. W przypadku badania wpływu typu danych na czas sortowania można stworzyć menu dwupoziomowe, gdzie na pierwszym poziomie wybieramy typ danych (np.
float
lubi32
/int
), a drugi poziom zawiera menu przedstawione powyżej.
- Sortowanie przez wstawianie (insertion sort).
- Sortowanie przez kopcowanie (heapsort).
- Sortowanie Shella:
- Sortowanie szybkie (quick sort).
- Program napisany w wersji obiektowej.
- Badanie wpływu typu danych np.
int
ifloat
. - Wpływ wyboru odstępów dla algorytmu Shella (2 różne skrajne wzory tworzące algorytmy o różnych złożonościach).
- Sposób wyboru
pivota
(skrajny lewy, skrajny prawy, środkowy bądź losowy) -quicksort
.