第9章_中位数和顺序统计学.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章_中位数和顺序统计学

9.3最坏情况线性时间的选择 最坏情况下: 步骤1、2、4需要O(n)的时间 步骤3花时间T(? n/5? ) 步骤5所需时间至多为T(7n/10+ 6) 假设T是单调递增的 假设任何等于或小于140个元素的输入需要 O(1)的时间 后面会证明为什么取140 ( )T n ? ? 9.3最坏情况线性时间的选择 可以得到递归式: 使用替换法 假设对某个适当大的从常数c和所有的n ≤ 140,有T(n) ≤ cn 只要c足够大,这个假设就能成立 挑选一个常数a,使得对所有n0,由上述 O(n)项所描述的函数由an从上方限界 n /5 ? ?(1) 如果n ? 140 9.3最坏情况线性时间的选择 代入递归式得 可以发现,如果-cn/10 + 7c + an ≤ 0, 即可证明T(n)≤ cn 当n 70时,c ≥ 10a(n/(n - 70)) 所以当n ≥ 140时,有n/(n - 70) ≤ 2,此 时选择c ≥ 20a即可得出结论 因此,SELECT最坏情况下也是线性的 T (n) ? c ?n /5 ? c(7n /10 ? 6) ? an ? ? cn / 5 ? c ? 7cn /10 ? 6c ? an ? 9cn /10 ? 7c ? an ? cn ? (?cn /10 ? 7c ? an) 9.3最坏情况线性时间的选择 与比较排序中一样,SELECT和 RANDOMIZED-SELECT仅通过元素间的 比较来确定它们之间的相对次序 比较模型中,即使在平均情况下,排序算 法仍然需要?(n lg n)的时间 而线性时间排序算法在输入上做了假设。 线性时间选择算法不对输入做任何假设, 不受?(n lg n)的约束,因为它们没有使用 排序就解决了选择的问题。 * * 第9 章:中位数和顺序统 计学(选择问题) 本章简介 最小值和最大值 以期望线性时间做选择 最坏情况线性时间的选择 中位数和顺序统计学 在一个由n个元素组成的集合中 第i个顺序统计量:集合中第i小的元素 最小值:第1个顺序统计量 最大值:第n个顺序统计量 中位数:集合的“中点元素” n为奇数时,中位数唯一, i = (n+1)/2 简单起见,我们在提到“中位数”时,总是讨论 下中位数 n为偶数时,有上中位数 (i ? ?(n ? 1) / 2?) 和下中位 数(i =??(n ? 1) / 2?) 中位数和顺序统计学 选择问题: 从一个由n个不同数值构成的集合中选择其第 i个顺序统计量 输入:一个包含n个(不同的)数的集合A和 一个数i,1≤i≤n 输出:元素x∈A,它恰大于A中其他的i-1个 元素 可以在O(n lg n)时间内解决,因为可以用堆 排序或合并排序,然后标出第i个元素即可 有没有更好的算法? 5 9.1 最小值和最大值 找到最小元素的程序 假设集合存放于数组A中,且length[A]=n。 MINIMUM(A) 1 min ← A[1] 2 for i←2 to length[A] 3 do if min A[i] 4 then min ← A[i] 5 return min 该算法进行了n-1次比较 同理可得找最大值的程序 以上算法最优? 把它看成各元素之间进行的一场锦标赛,每 次比较都是其中一场比赛。 除了最终获胜者之外,每个元素都要输掉至 少一场比赛 为确定最小(最大)值,做n-1次比较是必须 的 9.1 最小值和最大值 同时找出最小值和最大值 应用:图形程序变换一组数据(x,y)使之能适 合一个矩形显示屏或其他图形输出装置,此 时必须先确定每个坐标最大最小值 前面算法调两遍,比较次数2n-2,复杂度 Θ(n),分析表明这是渐近最优的 最小值和最大值 将一对输入元素互相比较 将较小的与当前最小值比较 将较大的与当前最大值比较 事实上,至多 3??n / 2? 次比较就足以同时找到 9.1 最小值和最大值 (续上页) 初始值设定 n是奇数:最小值和最大值都设为第一个元素的值 n是偶数:对前两个元素做一次比较以决定最大值 和最小值的初值 比较次数: n是奇数:3(n-1)/2= 3 ?n / 2? n是偶数:1+3(n-2)/2= 3 n /2? ? 9.2以期望线性时间做选择 一般选择问题 看起来比找最小值的简单选择问题更难 实际上,两种问题渐近运行时间相同!都是 Θ(n) RANDOMIZED-SELECT算法 采用分治算法,以quick-sort为模型 区别在于只处理划分的一边 期望时间为Θ(n) 10 9.2以期望线性时间做选择 RANDOMIZED-SEL

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档