Java PriorityQueue 是如何排序的? [已关闭]

问题描述 投票:0回答:1

用户 当我们在java中使用PriorityClass时,当我们使用add方法向Queue中添加元素时,它会自动按顺序排列元素。它是如何做到的?

class Tan{
PriorityQueue\<Integer\> pq= new PriorityQueue();
pq.add(3);
pq.add(1);
pq.add(7);
pq.add(2);

System.out.println(pq);
}

当我们只为类创建对象并添加元素时,它的顺序是如何排列的?

我尝试查看实现 Serialized 的 PriorityQueue 的 java 文档类,但这没有太大帮助

java priority-queue
1个回答
0
投票

嗯,在幕后,优先级队列使用堆。

简单来说,堆是一种可以在 O(log*n) 时间内找到序列的最小/最大元素的数据结构。这就是优先级队列能够立即找到最高/最低元素的方式。

现在,为了回答您的问题,当您打印或循环优先级队列时,您实际上并不是在循环数组。相反,优先级队列会重复获取最小元素并打印它,给人一种结果数组已排序的感觉。

要进一步理解这个概念,请在 Google 上阅读以下内容:

  • 堆排序(解释列表如何“排列”这些元素)
  • 最小/最大堆(优先级队列使用的数据结构)
  • 优先队列(现在更有意义)
© www.soinside.com 2019 - 2024. All rights reserved.