摘要:
原文地址:http://kenby.iteye.com/blog/1028465题目:100亿个整数,求最大的1万个数,并说出算法的时间复杂度算法:如果把100亿个数全部读入内存,需要100 0000 0000 * 4B 大约40G的内存,这显然是不现实的。我们可以在内存中维护一个大小为10000的最小堆,每次从文件读一个数,与最小堆的堆顶元素比较,若比堆顶元素大,则替换掉堆顶元素,然后调整堆。最后剩下的堆内元素即为最大的1万个数,算法复杂度为O(NlogN)实现:从文件读数据有讲究,如果每次只读一个数,效率太低,可以维护一个输入缓冲区,一次读取一大块数据到内存,用完了又从文件接着读,这样效率 阅读全文
posted @ 2012-04-27 09:44
cryingbaby304
阅读(428)
评论(0)
推荐(0)

浙公网安备 33010602011771号