找出一个数组里面前K个最大数

本文介绍了如何高效地找出一个数组中前K个最大数的方法,包括全排序、改进算法和O(N)时间复杂度的算法。讨论了不同算法的时间复杂度,如快速排序和中值划分策略,并指出在小规模问题中,简单排序可能更为适用。
摘要由CSDN通过智能技术生成

前言:今天早上来实验室,同桌问了我一个问题:找出一个数组里面前K个最大数的高效算法。最近正好在看数据结构和算法相关内容,便以己之力帮她思考了思考。

问题:找出一个数组里面前K个最大数。

解法:

1.第一感觉就是对数组进行降序全排序,然后返回前K个元素,即是需要的K个最大数。

排序算法的选择有很多,考虑数组的无序性,可以考虑选择快速排序算法,其平均时间复杂度为O(NLogN)。具体代码实现可以参见相关数据结构与算法书籍。


2.观察第一种算法,问题只需要找出一个数组里面前K个最大数,而第一种算法对数组进行全排序,不单单找出了前K个最大数,更找出了前N(N为数组大小)

个最大数,显然该算法存在“冗余”,因此基于这样一个原因,提出了改进

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值