算法探究:线性时间选择问题

本文介绍了线性时间选择问题,即RandomizedSelect算法,它是一种随机化的快速排序,旨在提高效率。算法思路是随机选择基准元素进行分区,通过比较找到目标等级的数。在最佳情况下,时间复杂度为O(n),最坏为O(n^2)。文章还提供了代码实现,并指出算法性能与数据准备有关。
摘要由CSDN通过智能技术生成

一.什么是线性时间选择问题

前几天,女票问到了快速排序,然后我看了一下代码,发现不对呀,为什么连基本的递归都没有,后来仔细看了整个程序之后,发现,这个程序并不是普通的快速排序,而这也就引出了今天要讲的问题,线性时间选择问题,其实它也就是随机化的快速排序,以求加快效率,最快求解。

二.大体思路

RandomizedSelect算法,因为该算法是想要求解在一个序列中某一个等级大小的数,那么这个算法的大体思路其实就是随机选取基准元素,根据基准元素进行分区,小的分在左边,大的分在右边,每次分完之后返回基准元素所在数组中的索引,同时比较等级,小的话在左边查找,大的话在右边查找,那么这样说的话大家是不是又想到了快速排序算法,是不是特别熟悉呢。

三.具体实现

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值