Junior — Middle
Jakie rodzaje sortowania znasz i jakie mają one trudności pod względem czasu i pamięci?
sobes.tech AI
Odpowiedź od AI
Istnieje wiele algorytmów sortowania, oto główne z ich złożonością czasową i przestrzenną:
-
Sortowanie bąbelkowe (Bubble Sort)
- Czas: O(n²) w najgorszym i średnim przypadku
- Pamięć: O(1) (sortowanie w miejscu)
-
Sortowanie przez wstawianie (Insertion Sort)
- Czas: O(n²) w najgorszym przypadku, O(n) w najlepszym (prawie posortowana tablica)
- Pamięć: O(1)
-
Sortowanie przez wybór (Selection Sort)
- Czas: O(n²) we wszystkich przypadkach
- Pamięć: O(1)
-
Sortowanie przez scalanie (Merge Sort)
- Czas: O(n log n) we wszystkich przypadkach
- Pamięć: O(n) (wymaga dodatkowej pamięci do scalania)
-
Sortowanie szybkie (Quick Sort)
- Czas: O(n log n) średnio, O(n²) w najgorszym przypadku (rzadko)
- Pamięć: O(log n) (stos rekurencyjny)
-
Sortowanie przez kopiec (Heap Sort)
- Czas: O(n log n) we wszystkich przypadkach
- Pamięć: O(1)
-
Timsort — hybrydowe sortowanie używane w Pythonie i Javie
- Czas: O(n log n) średnio i w najgorszym przypadku
- Pamięć: O(n)
Wybór algorytmu zależy od rozmiaru danych, wymagań pamięciowych i stabilności sortowania (czy zachowuje kolejność równych elementów). Na przykład Merge Sort jest stabilny, Quick Sort jest zwykle szybszy, ale niestabilny.