import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Random;
public class Top100LargestNumbers {
public static void main(String[] args) {
// 创建一个随机数生成器
Random random = new Random();
// 创建一个数组来存储100万个随机数
int[] numbers = new int[1000000];
// 生成100万个随机数
for (int i = 0; i < numbers.length; i++) {
numbers[i] = random.nextInt(1000000) + 1; // 生成1到1000000之间的数
}
// 使用优先队列(最小堆)来找到前100个大的数
PriorityQueue<Integer> minHeap = new PriorityQueue<>(100);
for (int num : numbers) {
if (minHeap.size() < 100) {
minHeap.offer(num);
} else if (num > minHeap.peek()) {
minHeap.poll(); // 移除最小的数
minHeap.offer(num); // 添加当前数
}
}
// 将结果转换为数组并排序
Integer[] top100 = minHeap.toArray(new Integer[0]);
Arrays.sort(top100, (a, b) -> b - a); // 从大到小排序
// 打印前100个最大的数
System.out.println(Arrays.toString(top100));
}
}
02-11
3377