Це репост запитання на cs.SE від Janoma . Повні кредити та здобичі йому чи cs.SE.
У звичайному курсі алгоритмів нас вчать, що середній показник швидкості - це O (n log n) і O (n²) у гіршому випадку. У той же час вивчаються й інші алгоритми сортування, які є O (n log n) у гіршому випадку (наприклад, злиття та велика частина ), і навіть лінійний час у кращому випадку (як бульбашка ), але з деякими додатковими потребами пам'яті.
Після швидкого огляду на ще певні часи , природно сказати, що хитрощі не повинні бути настільки ефективними, як інші.
Крім того, врахуйте, що студенти в основних курсах програмування навчаються, що рекурсія взагалі не дуже хороша, оскільки вона може використовувати занадто багато пам’яті тощо. Тому (і хоча це не справжній аргумент), це дає ідею про те, що не може бути швидкодія дійсно добре, тому що це рекурсивний алгоритм.
Чому ж тоді химерна перевага перевершує інші алгоритми сортування на практиці? Чи це стосується структури даних реального світу ? Це має відношення до способу роботи пам'яті в комп’ютерах? Я знаю, що деякі спогади проходять швидше, ніж інші, але я не знаю, чи це справжня причина цього контрінтуїтивного виконання (порівняно з теоретичними оцінками).