我一直在阅读有关minHeap和maxHeap的各种定义。我偶然发现声明:
摘自https://www.geeksforgeeks.org/heap-sort-for-decreasing-order-using-min-heap/中“注释”的陈述。但是,当我使用带有默认比较器的Java中的PriorityQueue<Integer>
来实现minHeap并对其进行poll()时,我得到了最小的元素。这是为什么?感谢任何尝试提供帮助的人:)。
博客中的解释是正确的
虽然仔细研究了heapSort()
函数,但它巧妙地利用了最小堆。数组的最小元素被最后一个元素替换,堆的大小减小1以再次heapify()
它。
arr[0]
->表示最小的元素。
[在每次迭代中,对于从i
到n-1
的0
,arr [0]与arr[i]
交换,并且堆再次以比先前迭代小1的大小被堆化。