Wybór sortowania sprowadza się do kilku właściwości: złożoność czasowa, stabilność, zużycie pamięci in-place i charakter danych. Żadne sortowanie nie wygrywa wszędzie.
Wybór sortowania sprowadza się do kilku właściwości: złożoność czasowa, stabilność, zużycie pamięci in-place i charakter danych. Żadne sortowanie nie wygrywa wszędzie.
| Algorytm | Śr. czas | Najgorzej | Stabilne | In-place |
|---|---|---|---|---|
| Insertion | O(n²) | O(n²) | Tak | Tak |
| Merge | O(n log n) | O(n log n) | Tak | Nie |
| Quick | O(n log n) | O(n²) | Nie | Tak |
| Heap | O(n log n) | O(n log n) | Nie | Tak |
# Most languages ship a tuned hybrid; prefer it in production
sorted(data, key=lambda x: x.priority) # stable Timsort in Python
Nie pisz własnego sortowania, chyba że masz konkretny powód — biblioteczne sortowania (Timsort, introsort) to przetestowane w boju hybrydy.
Dopasowanie sortowania do danych i wymagań unika zarówno zmarnowanego czasu, jak i subtelnych błędów (takich jak utrata stabilności).
Zrozumienie kompromisów wyjaśnia, dlaczego standardowe biblioteki wybrały hybrydy takie jak Timsort i introsort.
To porównawcze osądzenie — nie zapamiętywanie jednego algorytmu — jest tym, co nagradzają rzeczywiste inżynieria i rozmowy kwalifikacyjne.