c语言中define N 10 lgN=一个数 然后求N 怎么打程序

题目:100亿个整数求最大的1万个數,并说出算法的时间复杂度   算法:如果把100亿个数全部读入内存需要100 * 4B 大约40G的内存,这显然是不现实的 我们可以在内存中维护一个大小為10000的最小堆,每次从文件读一个数与最小堆的堆顶元素比较,若比堆顶元素大 则替换掉堆顶元素,然后调整堆最后剩下的堆内元素即为最大的1万个数,算法复杂度为O(NlogN)   实现:从文件读数据有讲究如果每次只读一个数,效率太低可以维护一个输入缓冲区,一次读取一夶块数据到内存 用完了又从文件接着读,这样效率高很多缓冲区的大小也有讲究,一般要设为4KB的整数倍因为磁盘的块大小一般 就是4KB     /*

我要回帖

更多关于 用函数求每个N出现的位置 的文章

 

随机推荐