45節(jié)介紹了堆的概念和算法,上節(jié)介紹了Java中堆的實(shí)現(xiàn)類PriorityQueue,PriorityQueue除了用作優(yōu)先級(jí)隊(duì)列,還可以用來解決一些別的問題,45節(jié)提到了如下兩個(gè)應(yīng)用:

  • 求前K個(gè)最大的元素,元素個(gè)數(shù)不確定,數(shù)據(jù)量可能很大,甚至源源不斷到來,但需要知道到目前為止的最大的前K個(gè)元素。這個(gè)問題的變體有:求前K個(gè)最小的元素,求第K個(gè)最大的,求第K個(gè)最小的。

  • 求中值元素,中值不是平均值,而是排序后中間那個(gè)元素的值,同樣,數(shù)據(jù)量可能很大,甚至源源不斷到來。 

本節(jié),我們就來探討如何解決這兩個(gè)問題。

求前K個(gè)最大的元素

基本思路

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式