堆排序的應用-TOPK問題

我們知道堆有大根堆和小根堆兩種,那麼在解決找堆中K個最大值的問題時應該用大根堆還是小根堆呢?答案是找K個最大的,要建立K大小的小堆。思路如下: 比如下面這個數組,要去取出其中最大的四個值,需要先將數組的前四個做成一個小根堆, 然後將後面的值與堆頂值比較,若大於堆頂值則彈出堆頂,將新的值加入堆 重複這個步驟,堆中的值會整體增大,數組遍歷完後,則堆中的元素爲四個最大值。 有了思路,來看下面這個問題:給
相關文章
相關標籤/搜索