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)