I_P_W14_M09_C++ Metody sortowania
Sposób sortowania elementów
Wyrazy sortowanego zbioru mogą być sortowane rosnąco, niemalejąco, malejąco lub nierosnąco. Domyślnym przypadkiem jest sortowanie niemalejące lub rosnące.
Chociaż terminy kolejność niemalejąca i rosnąca oraz nierosnąca i malejąca bywają używane zamiennie, ich znaczenia nie są tożsame.
O sortowaniu rosnącym mówimy wtedy, gdy każdy kolejny posortowany element jest większy od poprzedniego – nie ma równych elementów.
O sortowaniu niemalejącym mówimy wtedy, gdy każdy kolejny posortowany element jest większy lub równy poprzedniemu (w zbiorze są równe sobie elementy).
O sortowaniu malejącym mówimy wtedy, gdy każdy kolejny posortowany element jest mniejszy od poprzedniego – nie ma równych elementów.
O sortowaniu nierosnącym mówimy wtedy, gdy każdy kolejny posortowany element jest mniejszy lub równy poprzedniemu (w zbiorze są równe sobie elementy).
Algorytmy sortowania – właściwości
Mówiąc o algorytmach sortowania, powinniśmy pamiętać o tym, jak można je scharakteryzować oraz ze względu na co podzielić.
Możemy wyróżnić działania, na których bazuje większość algorytmów sortowania, które poznamy – są to np.: wstawianie, zamiana, wybór oraz łączenie. Algorytmy najczęściej wykorzystują kilka z nich.
Sortowanie w miejscu
Algorytmy sortowania, które sortują w miejscu (in situ) to takie algorytmy, które niezależnie od tego, jaki jest rozmiar danych wejściowych, do wykonania sortowania potrzebują stałej ilości pamięci komputera.
Przykłady algorytmów sortowania, które sortują dane w miejscu: sortowanie przez wybieranie, sortowanie przez wstawianie, sortowanie bąbelkowe, sortowanie szybkie.
Przykłady algorytmów sortowania, które nie sortują danych w miejscu: sortowanie kubełkowe, sortowanie pozycyjne (np. sortowanie pozycyjne dat, sortowanie pozycyjne liczb, sortowanie pozycyjne słów), sortowanie przez zliczanie, sortowanie przez scalanie.
Stabilność
Algorytmy sortowania stabilnego to takie algorytmy, w których elementy o takiej samej wartości podczas sortowania nie zmieniają kolejności względem siebie.
Przykłady algorytmów sortowania, które są stabilne: sortowanie przez wstawianie, sortowanie bąbelkowe, sortowanie pozycyjne (np. sortowanie pozycyjne dat, sortowanie pozycyjne liczb, sortowanie pozycyjne słów), sortowanie przez zliczanie, sortowanie przez scalanie.
Przykłady algorytmów sortowania, które nie są stabilne: sortowanie przez wybieranie, sortowanie kubełkowe, sortowanie szybkie.
Złożoność obliczeniowa i pamięciowa
Informacje na temat złożoności obliczeniowej oraz pamięciowej znajdziesz w e‑podręczniku na poziomie rozszerzonym w modułach: „Jak wybrać odpowiedni algorytm sortowania” oraz „Porównanie algorytmów sortowania”.
Słownik
proces polegający na porządkowaniu zbioru elementów według ich wybranych cech
inaczej in situ - sortowanie, w którym niezależnie od rozmiaru danych wejściowych potrzebna jest stała ilość pamięci komputera
sortowanie, w którym elementy o takiej samej wartości nie zmienią pozycji względem siebie
ilość zasobów komputerowych potrzebnych do wykonania zadania
ilość czasu potrzebnego do wykonania zadania, wyrażona jako funkcja ilości danych