100亿个数字找出最小的10个,使用堆的数据结构实现,java实现代码
时间: 2024-02-18 15:01:16 浏览: 188
好的,以下是Java实现代码:
```java
import java.util.PriorityQueue;
public class MinHeap {
public static void main(String[] args) {
int[] nums = {3, 5, 1, 6, 9, 2, 8, 7, 4, 0}; // 原始数据
int k = 10; // 需要找出最小的10个数
PriorityQueue<Integer> minHeap = new PriorityQueue<>(); // 创建小根堆
for (int num : nums) {
minHeap.offer(num); // 将元素加入堆中
if (minHeap.size() > k) {
minHeap.poll(); // 如果堆的大小超过k,弹出堆顶元素
}
}
for (int i = 0; i < k; i++) {
System.out.print(minHeap.poll() + " "); // 输出最小的k个数
}
}
}
```
以上代码中,我们使用 `PriorityQueue` 类来实现小根堆,首先将原始数据中的元素加入到堆中,如果堆的大小超过了k,就弹出堆顶元素。最后,我们再次遍历堆,输出最小的k个数。
阅读全文