《算法导论》笔记 第9章 9.3最坏情况线性时间选择

本文详细探讨了算法SELECT在不同分组情况下的运行时间,证明了当元素分为每组4个及以上时,算法能在最坏情况下保持线性时间复杂度。同时,解释了如何利用中位数选择算法改进快速排序,使其在最坏情况下达到O(nlgn)的时间复杂度。此外,介绍了寻找顺序统计量、k分位数、接近中位数的k个数以及两有序数组中所有元素中位数的线性或对数时间算法。
摘要由CSDN通过智能技术生成

【笔记】

SELECT最坏运行情况是线性的。


【练习】

9.3-1 在算法SELECT中,输入元素被分为每组5个元素。如果它们被分为每组7个元素,该算法会仍然以线性时间工作吗?证明如果分成每组3个元素,SELECT无法在线性时间内运行。

考虑每组分为k个元素。则大于或小于中位数的中位数的数至少为

因此在最坏情况下SELECT将处理最多n-(n/4-k)=3n/4+k个元素。

递归式


用代换法解决,假设算法是线性的,猜测有T(n)<=cn。


其中最后只在k>=4时成立。

因此该算法对4个及4个以上的分组是线性的。当k=3时该算法的复杂度是Ω(nlgn)。


9.3-2 分析SELECT,并证明如果n>=140,则至少有n/4个元素大于中位数的中位数x,并且至少有n/4个元素小于x。


9.3-3 假定元素的值不同,说明如何才能使快速排序在最坏情况下以O(nlgn)时间运行。

在快速排序中,使用完美分区即可在最坏情况下有O(nlgn)复杂度。每次以线性时间选出区间的中位数即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值