Чому Quicksort називають «Quicksort»?


9

Сенс цього питання полягає в тому, щоб не обговорювати достоїнства цього над будь-яким іншим алгоритмом сортування - безумовно, є багато інших питань, які роблять це. Це питання стосується назви. Чому Quicksort називають "Quicksort"? Звичайно, це "швидко", більшість часу, але не завжди. Можливість виродження до O (N ^ 2) добре відома. Існують різні модифікації Quicksort, які пом'якшують цю проблему, але ті, що приводять гірший випадок до гарантованого O (n log n), взагалі більше не називаються Quicksort. (наприклад, Introsort).

Мені просто цікаво, чому з усіх відомих алгоритмів сортування це єдиний, який заслуговує назви "швидкий", який описує не те, як алгоритм працює, а наскільки швидко він (як правило). Mergesort називається так, тому що він об'єднує дані. Хепсорт називають це тому, що він використовує купу. Introsort отримала свою назву від "Introspective", оскільки стежить за власним результатом, щоб вирішити, коли перейти з Quicksort на Heapsort. Так само для всіх повільних - Bubblesort, сортування вставки, сортування вибору тощо. Всі вони названі тим, як вони працюють. Єдиний інший виняток, про який я можу придумати, - це "Богосорт", який насправді є лише жартом, який ніхто ніколи насправді не використовує на практиці. Чому Quicksort не називається чимось більш описовим, як-от "Сортування розділів" або "Сортування", які описують, що це насправді робить? Навіть справа не в тому, щоб "потрапити сюди першими". Mergesort був розроблений за 15 років до Quicksort. (1945 та 1960 відповідно Вікіпедії)

Я думаю, це насправді більше питання історії, ніж програмування. Мені просто цікаво, як воно отримало назву - це був просто гарний маркетинг?


1
Компанія Timsort, яка є вдосконаленою кікспортом, не приймає назву після того, як вона працює, а скоріше від її винахідника. Такі назви, як flashsort або introsort, також не дуже розповідають про алгоритм.
vartec

What's in a name? that which we call a rose By any other name would smell as sweet;Це чи бути так само швидко. Крім того, можливість виродження до O (N ^ 2) має невеликі шанси відбутися, і N LogN є досить хорошим для алгоритму, незважаючи на те, що у нас сьогодні більш швидкі алгоритми. Крім того, до того моменту, як щось швидше з'явилося, було вже пізно, всі вже називали його Quicksort!
Ampt

1
@vartec Timsort насправді походить від Mergesort, а не від Quicksort, але я згоден, це ще один виняток. Introsort не дає вам весь алгоритм, але принаймні описує щось, як він працює - це "інтроспективний". Flashsort, з яким я не дуже знайомий, але я думаю, що це називається тому, що він "спалахує" кожен елемент у найкращому розумінні, де він повинен бути?
Даррел Гофман

1
@Ampt Насправді, в основній формі Квіксорта, випадок O (N ^ 2) є цілком ймовірним у загальному випадку, коли дані вже відсортовані або майже так. Щоправда, пізніші розробки, такі як Median-of-3 або випадковий стрижень, роблять це набагато рідше, але назва все ще використовується для реалізації, у яких відсутні такі вдосконалення.
Даррел Гофман

Мабуть, це краще, ніж найшвидший?
JeffO

Відповіді:


13

У 1962 р. Дослідження алгоритмів сортування не було таким сучасним, як сьогодні, і комп'ютерний вчений Тоні Хоар знайшов новий алгоритм, який був швидшим, ніж інший, тому він опублікував документ під назвою Quicksort і, як газет цитується, назва залишилася.

Цитуючи реферат:

Описано новий метод сортування в магазині з випадковим доступом на комп'ютері. Метод дуже вигідно порівнюється з іншими відомими методами за швидкістю, економією зберігання та простотою програмування. Певні уточнення методу, які можуть бути корисними для оптимізації внутрішніх циклів, описані у другій частині статті.


Виноска на стор. 11 у пов'язаному PDF припускає, що в 1961 році був опублікований старіший документ про Quicksort. Цей документ також згадується в розділі "Посилання" в кінці статті.
FrustratedWithFormsDesigner

1961, Алгоритм 64: Кіксорт
Пітер Б

Я думаю, це наближення до правильної відповіді, наскільки я, мабуть, отримаю. Він пояснює, хто його назвав, але не чому він все ще використовує це ім'я, коли існують новіші та потенційно швидші альтернативи. Гарне прочитання - цікаво подивитися, скільки речей із 60-х років все ще стосується сучасних технологій.
Даррел Гофман

3
@DarrelHoffman Чому змінилася б назва? У який момент недоліки виклику алгоритму Quicksort перевищують вартість спроб змусити всіх назвати його PartitionSort чи ще?
профілі

0

Я вважаю, що його спочатку називали Сортом Хоара після винахідника, але ім'я змінилося досить рано через те, що звук Хоара трохи схожий на повію англійською. Щодо того, чому вони обрали "швидку" замість чогось іншого, я не впевнений.


-1

Я вважаю, це тому, що на той момент, коли він був винайдений, він був набагато швидшим за всіх (або, вірніше, більшість, оскільки швидкість також сильно залежить від виду даних, а в деяких випадках інший алгоритм стає набагато швидшим, ніж швидкодіючий) алгоритми там.

Так, так, це історично (я не знаю точно цієї історії, однак ...)

Але я погоджуюся, що його назва повинна замість цього містити натяк на алгоритм ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.