首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

1亿个整数中选出最大的100个数,要求时间空间复杂度最优,该如何解决

2013-01-25 
1亿个整数中选出最大的100个数,要求时间空间复杂度最优如题[解决办法]用前100个数建成小顶堆,然后顺序读入

1亿个整数中选出最大的100个数,要求时间空间复杂度最优
如题
[解决办法]
用前100个数建成小顶堆,然后顺序读入后面的数一次跟堆顶元素比较,如果大于堆顶元素,就替换,然后做min-heapify。
空间复杂度O(M),时间复杂度O(NlgM),N就是1亿,M是100.
[解决办法]
思路1:
由于都是整数,可以考虑使用线性的排序算法。如基数排序,计数排序等。
时间复杂度O(n)

思路2:
改造快速排序的patition()函数,使得被选定的值不断靠近100.
平均时间复杂度也接近是O(n)。

热点排行