堆排序的应用-TOPK问题

我们知道堆有大根堆和小根堆两种,那么在解决找堆中K个最大值的问题时应该用大根堆还是小根堆呢?答案是找K个最大的,要建立K大小的小堆。思路如下: 比如下面这个数组,要去取出其中最大的四个值,需要先将数组的前四个做成一个小根堆, 然后将后面的值与堆顶值比较,若大于堆顶值则弹出堆顶,将新的值加入堆 重复这个步骤,堆中的值会整体增大,数组遍历完后,则堆中的元素为四个最大值。 有了思路,来看下面这个问题:给
相关文章
相关标签/搜索