当前位置:   article > 正文

数据排序之TopK问题_topk的排序

topk的排序

前言】在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“topK”问题

解决思路

针对topK类问题,通常比较好的方案是【分治+trie树/hash+小顶堆】,即先将数据集按照hash算法分解成多个小数据集,然后使用trie树或者hash表统计每个小数据集中的query词频,之后用小顶堆求出每个数据集中出频率最高的前K个数,最后在所有top K中求出最终的top K。

实际上,最优的解决方案应该是最符合实际设计需求的方案,在实际应用中,可能有足够大的内存,那么直接将数据扔到内存中一次性处理即可,也可能机器有多个核,这样可以采用多线程处理整个数据集。

解决】在得到数据后,如何对获得的数据进行topK排序呢。下面简单介绍几种常见方法。

【1】基于Partition(分区)解决TopK min的问题:根据数组的第K个数字来调整,使得比第K个数小的都在数组的左边,比第K个数据大的所有数字在数组的右边。

  1. /**
  2. * 最小的K个数,O(N)解法,需要修改原数组
  3. * @param a
  4. * @param n
  5. * @param b
  6. *
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/716850
推荐阅读
相关标签
  

闽ICP备14008679号