有10亿个杂乱无章的数,怎样最快地求出其中前1000大的数
1)方法1建一个1000个数的最小堆,然后依次添加剩余元素,如果大于堆顶的数(堆中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的1000个数就是所需的最大的1000个。算法的时间复杂度为O(nlogk)=n*log1000=10n(n为10亿,k为1000)。优化的方法:分治法。可以把所有10亿个数据分组存放,比如分别放在1000个文件中。这...