无序数组中找top K 个值

在不增长空间复杂度的状况下,用堆排序。维护一个大小为k的堆。若是是找最大的K个值,那么用大顶堆,不然用小顶堆。 先从原数组中取k个值创建一个堆,而后每次从原数组中拿一个值与堆顶元素进行比较,看是否须要替换,若是替换了,就进行一次堆排序。这样到最后,这个堆中的元素就是top K。web 前K大,维护最小堆;前K小,维护最大堆 1.初始化一个最小堆 2.输入新数据,若大于堆顶则替换堆顶,调整堆为最小堆
相关文章
相关标签/搜索