Загалом, існують алгоритми сортування , такі як сортування вставок, сортування міхурів та вибір виділення, які зазвичай слід використовувати лише в особливих обставинах; Quicksort, що є в гіршому випадку O ( n 2 ), але досить часто O ( n log n ) з хорошими константами та властивостями і який може бути використаний як процедура сортування загального призначення; Про ( п увійти п ) алгоритми, такі як злиття-сортування і купу сортування, які також є хорошими алгоритмами загального призначення сортування; і О ( нO(n2)O(n2)O(nlogn)O ( n журналn )O ( n )або лінійні алгоритми сортування списків цілих чисел, таких як радіакс, відро та типи підрахунку, які можуть бути придатними залежно від природи цілих чисел у ваших списках.
Якщо елементи у вашому списку такі, що все, що ви знаєте про них, є загальним співвідношенням порядку між ними, то оптимальні алгоритми сортування матимуть складність Ω ( n журналn ) . Це досить класний результат і той, для якого ви зможете легко знайти деталі в Інтернеті. Лінійні алгоритми сортування використовують додаткову інформацію про структуру елементів, що підлягають сортуванню, а не просто загальне відношення порядку між елементами.
Ще загальніше, оптимальність алгоритму сортування тісно залежить від припущень, які ви можете зробити про тип списків, які ви будете сортувати (а також машинну модель, за якою буде запускатись алгоритм, що може зробити навіть інакше поганим сортування алгоритми найкращий вибір; розглянути сортування бульбашок на машинах із стрічкою для зберігання). Чим сильніше ваші припущення, тим більше кутів може скоротити ваш алгоритм. За дуже слабких припущень про те, наскільки ефективно можна визначити "сортованість" списку, оптимальною складністю в гіршому випадку може бути навіть .Ω ( n ! )
Ця відповідь стосується лише складностей. Фактичний час виконання алгоритмів буде залежати від великої кількості факторів, які важко врахувати в одній відповіді.