工作记录-----TOP K 小顶堆源码---小白也能看懂

2023-12-14 21:45:46

怎么实现小顶堆?

使用优先队列(PriorityQueue)来实现小顶堆

import java.util.PriorityQueue;

public class MinHeapExample {
   
    public static void main(String[] args) {
   
        // 创建一个小顶堆
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();

        // 添加元素到小顶堆
        minHeap.add(5);
        minHeap.add(2);
        minHeap.add(8);
        minHeap.add(1);
        minHeap.add(10);

        // 获取小顶堆的堆顶元素(最小值)
        int minElement = minHeap.peek();
        System.out.println("最小元素:" + minElement);

        // 弹出并移除堆顶元素
        int removedElement = minHeap.poll();
        System.out.println("移除的最小元素:" + removedElement);

        // 输出小顶堆的元素(按照从小到大的顺序)
        System.out.println("小顶堆中的元素:");
        while (!minHeap.isEmpty()) {
   
            System.out.print(minHeap.poll() + " ");
        }
    }
}

这段代码会创建一个小顶堆,然后添加一些元素。你可以使用 peek() 方法来获取堆顶元素,使用 poll() 方法弹出并移除堆顶元素。最后,遍历小顶堆并输出元素,会按照从小到大的顺序输出。

当你需要找到数组或数据流中的前 K 个最小或最大的元素时,可以使用小顶堆(PriorityQueue)来解决。下面是一个用 Java 实现 TOP K 问题(找到数组中前 K 个最大元素)的示例代码:

import java.util.PriorityQueue;

public class TopKElements {
   
    public static void main(String[] args) {
   
      

文章来源:https://blog.csdn.net/qq_51711443/article/details/134994064
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。