無序數組中找top K 個值

在不增長空間複雜度的狀況下,用堆排序。維護一個大小爲k的堆。若是是找最大的K個值,那麼用大頂堆,不然用小頂堆。 先從原數組中取k個值創建一個堆,而後每次從原數組中拿一個值與堆頂元素進行比較,看是否須要替換,若是替換了,就進行一次堆排序。這樣到最後,這個堆中的元素就是top K。web 前K大,維護最小堆;前K小,維護最大堆 1.初始化一個最小堆 2.輸入新數據,若大於堆頂則替換堆頂,調整堆爲最小堆
相關文章
相關標籤/搜索