您的位置:首页 > 其它

排序的选择问题

2017-08-17 12:17 267 查看
希望用最快的速度从一个无序数组中挑选出其中前十个最大的元素,在以下的排序方法中(B)
快速排序
堆排序
归并排序
基数排序


题目不在乎空间只要速度,没记错应该是基数排序最快且稳定。

如果结合实际(顾及空间开销)考虑的话,我会选择堆排序,因为ABC时间复杂度(O(N*logN))虽然一样,但是堆排序在建堆(时间复杂度近似O(N))之后取十次大根堆的堆顶就行了,即不需要执行完整个堆排序,但A和C需要走完排序流程后才能取到最大十个元素。

假设你只有100MB的内存,需要对1GB的数据进行排序,最合适的算法是()


首先内存只有100Mb,而数据却有1Gb,所以肯定没法一次性放到内存去排序,只能用外部排序,而外排序通常是使用多路归并排序,即将原文件分解成多个能够一次性装入内存的部分(如这里的100Mb),分别把每一部分调入内存完成排序(根据情况选取适合的内排算法),然后对已经排序的子文件进行多路归并排序(胜者树或败者树)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: