topK问题分析与实现

一,什么是topK问题?

一组数据中,需要找出前k大(小)的数据

二,思路分析:以前k小为例

思路1:先排序再输出

如果是完全有序,那么输出所求数据很简答了(需要排序,将数据完全排序

思路2:基于快排,分片,不完全排序

使用快排思想,不断分片,左侧是比基准小的元素,右侧是比基准大的元素,

         令 index=基准元素下标

a, index<k  说明第k小元素在index右侧,在index右侧寻找新的基数,直到基数的下标index==k

b,index==k   说明第k小元素就是基准元素

c,index>k  说明第k小元素在index左侧,在index左侧寻找新的基数,直到基数的下标index==k

三.另一种思路

数组长度为n,需要找出topk 小

那么将数组分为两部分

result=[0,k-1],<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值