总结 -- 寻找最大的K个数,寻找第K大的数

本文总结了在不同规模数据下寻找最大的K个数和第K大的数的方法。对于小规模数据,可以采用排序、部分排序或直接遍历。对于大规模数据,利用数组、小顶堆或二分策略。此外,还讨论了寻找第K到M大的数的解决方案,包括先找出第K和第M大数,再进行扫描。
摘要由CSDN通过智能技术生成

一、在N个数中,寻找最大的K个数

这里只考虑K不等于1的情况,K = 1时,可以通过N - 1次比较和交换得到结果。

 

1. N不大的情况下,几千个左右。

① 先排序,快速排序或者堆排序,平均复杂度为O(N*log2N),再取出前K个,OK)。总时间复杂度,O(N*log2N) + O(K) =O(N*log2N) ; 

 

② 若K <=  log2N,可以进行部分排序(选择排序和冒泡排序)。把N个数中的前K个数排序出来,复杂度是ON*K;

 

③ 寻找N个数中最大的K个数,本质上就是寻找最大的K个数中最小的那个,也就是第K大的数。然后再遍历一次

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值