Java中的 top K 問題

top K 問題 給定一個集合(元素個數很多 N),想找到前 K 個最大的或最小的元素   以找前 K 大的值爲例(兩個方案) 1、針對這個集合,建立一個大小爲 N 的大堆,循環取 K 此堆頂元素即可 2、建立一個大小爲 K 的小堆,堆頂元素中的最小值(守門員),循環遍歷 N 個元素中的每個元素,分別和守門員進行比較,如果比守門員大,此時就直接把守門員替換成當前元素,並且向下調整堆,得到新的守門員
相關文章
相關標籤/搜索