为什么将Quicksort称为“ Quicksort”?


9

这个问题的重点在于,与其他任何排序算法相比,它的优点不容置疑-当然还有许多其他问题。这个问题是关于名字的。为什么将Quicksort称为“ Quicksort”?当然,大多数情况下都是“快速”,但并非总是如此。简并为O(N ^ 2)的可能性是众所周知的。对Quicksort进行了各种修改以缓解此问题,但那些将最坏情况降低到保证的O(n log n)的修改通常不再称为Quicksort。(例如Introsort)。

我只是想知道为什么在所有众所周知的排序算法中,这是唯一应得的“快速”名称,它不描述算法的工作原理,而是描述算法的速度(通常)。之所以称为Mergesort,是因为它合并了数据。之所以称为Heapsort,是因为它使用堆。Introsort的名称来自“ Introspective”,因为它会监视自己的性能来决定何时从Quicksort切换到Heapsort。同样,对于所有较慢的变量-Bubblesort,Insertion排序,Selection排序等,它们均以其工作方式命名。我能想到的唯一一个例外是“ Bogosort”,它实际上只是一个笑话,没人在实践中实际使用过。为什么Quicksort不能称为更具描述性的名称,例如“分区排序”或“数据透视排序”,哪个描述了它的实际作用?甚至都不是“先到这里”的情况。Mergesort的开发比Quicksort早了15年。(根据维基百科分别为1945年和1960年)

我想这确实是一个历史问题,而不是编程问题。我很好奇它的名字-只是好的营销?


1
Timsort是改进后的quicksort,它的工作原理并不出名,而是它的发明者。诸如flashsortintrosort之类的名称也不会告诉您有关算法的太多信息。
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,但是我猜它被称为是因为它“将”每个元素“闪烁”到了对它应该在哪里的最佳猜测中?
Darrel Hoffman 2013年

1
@Ampt实际上,以Quicksort的最基本形式,在数据已经排序或接近排序的常见情况下,很有可能出现O(N ^ 2)的情况。诚然,诸如3中位数或随机支点之类的后来发展使其变得更加罕见,但该名称仍用于缺乏此类改进的实现中。
Darrel Hoffman

显然,它比Quickest好吗?
JeffO 2013年

Answers:


13

1962年,关于排序算法的研究并不像今天那么先进,计算机科学家Tony Hoare发现了一种比其他算法更快的新算法,因此他发表了一篇名为Quicksort的论文,并引用了该论文的标题。

引用摘要:

描述了一种在计算机的随机存取存储中进行排序的新方法。与其他已知方法相比,该方法在速度,存储经济性和易于编程方面都非常有利。该方法的某些改进可能对内部循环的优化有用,将在本文的第二部分进行介绍。


链接的PDF在第11页上的脚注表明,有一篇有关Quicksort的较早的文章于1961年发表。该文章的末尾的“参考”部分中也有提及。
FrustratedWithFormsDesigner 2013年

1961年,Algorythm 64:Quicksort
Pieter B

我想这与我可能会得到的正确答案非常接近。它解释了命名它,但是没有解释为什么存在更新的和可能更快的替代方法时仍使用该名称。读得好-有趣的是,从60年代开始,有多少东西仍然适用于现代技术。
Darrel Hoffman

3
@DarrelHoffman为什么名称会更改?在什么时候调用Quicksort算法的弊端会超过使每个人都称其为PartitionSort或其他方法的代价?
prosfilaes 2014年

0

我相信它最初是在发明人之后被称为Hoare Sort,但由于Hoare在英语中听起来有点接近妓女,所以这个名称很快就被更改了。至于为什么他们选择“快速”而不是其他方式,我不确定。


-1

我认为这是因为,在发明它的时候,它比所有方法(或者,大多数情况下,因为速度也很大程度上取决于数据的类型,并且在某些情况下,其他算法变得比quicksort的速度更快)要快得多。算法在那里。

是的,这是历史的(但是我确切地不知道那个历史...)

但是我同意它的名称应该包含该算法的提示...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.