minheap排序的顺序?

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

我一直在阅读有关minHeap和maxHeap的各种定义。我偶然发现声明:

  1. minHeap用于按降序排序。
  2. maxHeap用于按升序排序。

摘自https://www.geeksforgeeks.org/heap-sort-for-decreasing-order-using-min-heap/中“注释”的陈述。但是,当我使用带有默认比较器的Java中的PriorityQueue<Integer>来实现minHeap并对其进行poll()时,我得到了最小的元素。这是为什么?感谢任何尝试提供帮助的人:)。

java algorithm sorting data-structures heap
1个回答
0
投票

博客中的解释是正确的

虽然仔细研究了heapSort()函数,但它巧妙地利用了最小堆。数组的最小元素被最后一个元素替换,堆的大小减小1以再次heapify()它。

arr[0]->表示最小的元素。

[在每次迭代中,对于从in-10,arr [0]与arr[i]交换,并且堆再次以比先前迭代小1的大小被堆化。

© www.soinside.com 2019 - 2024. All rights reserved.