从100万个数中找出最大的前100个数-最小堆、分块
题目:从N=100 0000个数中找出最大的前m=100个数最小堆1 建立m=100的最小堆,heapify方法从数组变为最小堆的复杂度为O(m)2 剩下的N-m个依次与堆顶元素比较,若大于,就替换堆顶元素,然后调整堆结构(下沉),(N-m)logm,最后堆内的元素就是所求总时间复杂度为 O(m)+O((N-m)logm)=O(Nlogm)分块+最小堆如果不能从磁盘读取那么多,可以分块,将100万分成100个1万,对每个1万进行上述操作。即O(Nlogm),N=10000,m=100.此时,每
原创
2021-04-22 12:36:47 ·
1000 阅读 ·
0 评论