RhrRbMLa9ZF6t
Zdjęcie przedstawia dłoń osoby zrywającą pomarańczę.

I_P+R_W14_M10_Java Metody sortowania

Źródło: Brienne Hong, domena publiczna.

Sortowanie – przypomnienie

Sortowaniem nazywamy porządkowanie elementów w pewien ustalony sposób.

Istnieje wiele metod sortowania, różniących się zarówno sposobem działania, jak i efektywnością. W związku z tym algorytmy sortujące, w zależności od swojej złożoności algorytmicznej, różnią się czasem rozwiązywania danego problemu.

Sposób sortowania elementów

Elementy 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ącarosnąca oraz nierosnącamaleją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.

Linia 1. 0 2 5 7 13 16 34 37 51 61.

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).

Linia 1. 0 2 5 7 7 16 34 51 51 61.

O sortowaniu malejącym mówimy wtedy, gdy każdy kolejny posortowany element jest mniejszy od poprzedniego – nie ma równych elementów.

Linia 1. 61 51 37 34 16 13 7 5 2 0.

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).

Linia 1. 61 51 51 34 16 7 7 5 2 0.

Do czego służy sortowanie?

Sortowanie to inaczej porządkowanie danych uwzględniające jakąś ich cechę. Jeżeli sortujemy liczby, taką cechą jest zazwyczaj ich wartość, więc sortujemy je rosnąco, nierosnąco, malejąco oraz niemalejąco. Sortować możemy nie tylko liczby, ale również litery czy ciągi znaków.

Algorytmy stabilne i niestabilne

Algorytmy stabilne to takie, w których elementy o takiej samej wartości nie zmienią pozycji względem siebie, natomiast algorytmy niestabilne mogą zmienić ich kolejność. Jeżeli algorytm niestabilny napotka dwa elementy o wartości 7, nie musi zamieniać ich miejscami, aby uzyskać posortowany zbiór. W zależności od implementacji, może to jednak zrobić.

Przykład 1

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ład 2

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

sortowanie
sortowanie

proces polegający na porządkowaniu zbioru elementów według ich wybranych cech

sortowanie w miejscu
sortowanie w miejscu

inaczej in situ; sortowanie, w którym niezależnie od rozmiaru danych wejściowych potrzebna jest stała ilość pamięci komputera

sortowanie stabilne
sortowanie stabilne

sortowanie, w którym elementy o takiej samej wartości nie zmienią pozycji względem siebie

złożoność obliczeniowa
złożoność obliczeniowa

ilość zasobów komputerowych potrzebnych do wykonania zadania

złożoność czasowa
złożoność czasowa

ilość czasu potrzebnego do wykonania zadania, wyrażona jako funkcja ilości danych