看到这个题目首先想到是排序,那么时间复杂度自然就是O(NlgN).那么使用二叉堆如何解决呢? 对于下面一个数组,共有12个元素,我们的目标就是找出第5大元素——12 首先建立一个具有M个元素的最小堆,那么堆顶是这M个元素的最小值,接下来遍历剩下的元素,如果一个元素小于堆顶元素则不做任何操作,如果大于堆顶元素,则替换该元素,并且调整最小堆.显然最后堆的M个元素是最大的M个元素,而它们中最小的正式堆顶元素. 实现代码 Heap <Integer> h = new Heap<>(); I
堆(Heap) The operations commonly performed with a heap are: create-heap: create an empty heap heapify: create a heap out of given array of elements find-max or find-min: find the maximum item of a max-heap or a minimum item of a min-heap (aka, peek) d