zoukankan      html  css  js  c++  java
  • Priority Queue Implementation

    In Java, the PriorityQueue class is implemented as a priority heap. Heap is an important data structure in computer science. For a quick overview of heap, here is a very good tutorial.

    1. Simple Example

    The following examples shows the basic operations of PriorityQueue such as offer(), peek(), poll(), and size().

    import java.util.Comparator;
    import java.util.PriorityQueue;
     
    public class PriorityQueueTest {
     
        static class PQsort implements Comparator<Integer> {
     
            public int compare(Integer one, Integer two) {
                return two - one;
            }
        }
     
        public static void main(String[] args) {
            int[] ia = { 1, 10, 5, 3, 4, 7, 6, 9, 8 };
            PriorityQueue<Integer> pq1 = new PriorityQueue<Integer>();
     
            // use offer() method to add elements to the PriorityQueue pq1
            for (int x : ia) {
                pq1.offer(x);
            }
     
            System.out.println("pq1: " + pq1);
     
            PQsort pqs = new PQsort();
            PriorityQueue<Integer> pq2 = new PriorityQueue<Integer>(10, pqs);
            // In this particular case, we can simply use Collections.reverseOrder()
            // instead of self-defined comparator
            for (int x : ia) {
                pq2.offer(x);
            }
     
            System.out.println("pq2: " + pq2);
     
            // print size
            System.out.println("size: " + pq2.size());
            // return highest priority element in the queue without removing it
            System.out.println("peek: " + pq2.peek());
            // print size
            System.out.println("size: " + pq2.size());
            // return highest priority element and removes it from the queue
            System.out.println("poll: " + pq2.poll());
            // print size
            System.out.println("size: " + pq2.size());
     
            System.out.print("pq2: " + pq2);
     
        }
    }

    Output:

    pq1: [1, 3, 5, 8, 4, 7, 6, 10, 9]
    pq2: [10, 9, 7, 8, 3, 5, 6, 1, 4]
    size: 9
    peek: 10
    size: 9
    poll: 10
    size: 8
    pq2: [9, 8, 7, 4, 3, 5, 6, 1]

    2. Example of Solving Problems Using PriorityQueue

    Nearest points on a plane:

    http://www.cnblogs.com/hygeia/p/5154490.html

    Merge K sorted lists:

    http://www.cnblogs.com/hygeia/p/5062768.html

    3. Collections.sort也用到了这个comparator:

    Insert Interval:

    http://www.cnblogs.com/hygeia/p/5112649.html

  • 相关阅读:
    百度ECharts数据绑定诀窍
    SQL操作Json数据
    c# 如何得到一个字符的ASCII码
    Sql数据库收缩 语句特别快
    Hive中 使用 Round() 的坑
    [转]Hive 数据类型
    [转] Hive函数大全
    使用Hive Rest API 连接HDInsight
    Hive动态分区 参数配置及语法
    Js的引用赋值与传值赋值
  • 原文地址:https://www.cnblogs.com/hygeia/p/5159158.html
Copyright © 2011-2022 走看看