Repozytorium zawiera implementacje klasycznych algorytmów sortowania w języku C++. Projekt został zrealizowany jako część zajęć projektowych z przedmiotu "Programowanie i analiza algorytmów".
Celem projektu jest praktyczne zapoznanie się z różnymi metodami sortowania danych, zrozumienie ich złożoności obliczeniowej oraz analiza wydajności w różnych scenariuszach.
Projekt zawiera oddzielne pliki nagłówkowe (.hpp) dla każdego z algorytmów:
-
InsertionSort.hpp- Sortowanie przez wstawianie. Prosty algorytm, wydajny dla małych lub wstępnie posortowanych zbiorów danych. -
MergeSort.hpp- Sortowanie przez scalanie. Algorytm oparty na paradygmacie "dziel i zwyciężaj", gwarantujący stabilną złożoność$O(N \log N)$ . -
QuickSort.hpp- Sortowanie szybkie. Jeden z najpopularniejszych i najszybszych w praktyce algorytmów, również korzystający z podejścia "dziel i zwyciężaj". -
Heapsort.hpp- Sortowanie przez kopcowanie. Wykorzystuje strukturę danych zwaną kopcem binarnym, gwarantuje złożoność$O(N \log N)$ w najgorszym przypadku. -
Introsort.hpp- Sortowanie introspektywne. Hybrydowy algorytm łączący zalety QuickSort (szybkość w średnim przypadku) oraz HeapSort (gwarancja$O(N \log N)$ w najgorszym przypadku). Często stosowany w standardowych bibliotekach, np.std::sortw C++.
- Pliki
*.hpp- Implementacje poszczególnych algorytmów sortowania w postaci szablonów klas lub funkcji. main.cpp- Plik główny programu, służący prawdopodobnie do testowania zaimplementowanych algorytmów, generowania danych wejściowych i pomiaru czasu wykonania (szczegóły zależą od zawartości).
- Język: C++
- Paradygmat: Programowanie proceduralne / obiektowe / generyczne (w zależności od implementacji)
Projekt został stworzony w celach edukacyjnych, aby zgłębić działanie fundamentalnych algorytmów. Kod może służyć jako materiał referencyjny dla studentów uczących się podstaw informatyki i analizy złożoności.