Java中的 top K 问题

top K 问题 给定一个集合(元素个数很多 N),想找到前 K 个最大的或最小的元素   以找前 K 大的值为例(两个方案) 1、针对这个集合,建立一个大小为 N 的大堆,循环取 K 此堆顶元素即可 2、建立一个大小为 K 的小堆,堆顶元素中的最小值(守门员),循环遍历 N 个元素中的每个元素,分别和守门员进行比较,如果比守门员大,此时就直接把守门员替换成当前元素,并且向下调整堆,得到新的守门员
相关文章
相关标签/搜索