TopK
从一亿个数据中找到前100个最大值
- 将无需序列构建成一个堆,根据升序降序需求选择大小为K的大顶堆或小顶堆;
- 将堆顶元素与数组中的元素比较,比堆顶大的元素,先弹出堆顶,然后元素入堆
时间复杂度O(NlogK)
import java.util.Arrays;
public class TopKHeapSort {
public static void main(String[] args) {
int[] arrs = new int[10000*10000];
for (int i = 0; i < arrs.length; i++) {
arrs[i] = (int) (Math.random() * 10000*10000 );
}
int[] arr = Arrays.copyOfRange(arrs,0,100)

本文探讨如何在大数据集中找到TopK个最大值。通过建立一个大小为K的堆(大顶堆或小顶堆)或优先队列PriorityQueue,与数据进行比较,实现O(NlogK)的时间复杂度解决方案。文章作者欢迎大家指正和交流。
最低0.47元/天 解锁文章
940

被折叠的 条评论
为什么被折叠?



