一个研究人员有一个包含一亿条人员记录的数据库。该研究人员想要研究按照其他标准(如星座、出生年份等)分布的名字,因此希望按名称排序并具有进一步排序的选项。
应该使用哪种排序方法?
A. 选择排序
B. 快速排序
C. 堆排序
D. 插入排序
E. 归并排序
谢谢!
应该使用哪种排序方法?
A. 选择排序
B. 快速排序
C. 堆排序
D. 插入排序
E. 归并排序
谢谢!
建议您将需求与 http://en.wikipedia.org/wiki/Sort_algorithms#Comparison_of_algorithms 上的比较表格进行对照。
有人发布了一个重复的帖子,这本来是我的答案。既然我已经花了力气打出了这些,那么我也可以分享给未来的读者。
每个排序算法都有其最佳和最差的使用情况。这是我尝试思考它的方式:
显然这只是一个非常简要的概述。您可以在维基百科和通过Google搜索“何时使用[插入算法]”等方式中找到更多信息。
希望这有所帮助!
最有效的排序算法,不会是传统的那种。
由于您是基于出生年份和星座等标准进行排序,我会使用“堆栈排序”(我刚刚想出来的)。
它的工作方式如下。
为每个可能的排序值创建一个数据结构。让我们以出生年份为例。在出生年份中,只会有大约100个不同的值。
当您完成遍历每个记录时,现在您已经拥有了100个数组,每个数组都填充有具有特定出生年份的记录。这个方法的好处在于,您已经在O(n)时间内完成了它,因此比任何其他排序算法都要快得多。这也适用于星座等...
打破常规思维。当对具有可能值(m)的大型数据集(n)进行排序时,此方法非常有用,其中m << n。