第8章_线性时间排序_算法分析与设计_杭电_褚一平.pptxVIP

第8章_线性时间排序_算法分析与设计_杭电_褚一平.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章:线性时间排序 2 本章内容 介绍了几种O(nlgn)的排序算法: 合并排序和堆排序达到此上界; 快速排序平均情况下达到此上界; 比较排序算法的下界 线性时间排序: 计数排序(Counting Sort) 基数排序(Radix Sort) 桶排序(Bucket Sort) 3 8.1 排序算法的下界 比较排序算法的作用 比较排序算法仅用来确定输入序列a1, a2, . . ., an的元素间次序,即给定两个元素ai 和aj, 测试ai aj, ai ≤ aj, ai = aj, ai ≥ aj, 或ai aj 中哪一个成立。 4 8.1 排序算法的下界 决策树模型 比较排序可以被抽象的视为决策树。一棵 决策树是一棵满二叉树,表示某排序算法 作用于给定输入所做的所有比较。(6,8,5) 5 决策树 在决策树中,对每个内结点都注明i:j,其中 1≤i,j≤n,n是输入序列中的元素个数。 对每个叶结点都注明排列 (π(1),π(2),…,π(n))。 排序算法的执行对应于遍历一条从树的根到叶 结点的路径。在每个内节结点处要做比较 要使排序算法能正确的工作,其必要条件是,n 个元素的n!种排列中的每一种都要作为决策树 的一个叶子而出现。 ai  a j 6 最坏情况下界 在决策树中,从根到任意一个可达叶节点之间 最长路径的长度,表示对应的排序算法中最坏 情况下的比较次数。这样,一个比较排序算法 中的最坏情况比较次数就与其决策树的高度相 等。 定理8.1 任意一个比较排序算法在最坏情况 下,都需要Ω(nlgn)次的比较。 于2 ,则有 n!≤l ≤ 2 定理8.1的证明 证明:对于一棵每个排列都作为一个可达叶结点出现的 决策树,根据前面的讨论即可确定其高度。考虑一棵高 度为h的、具有l个可达叶结点的决策树,它对应于对n 个元素所做的比较排序。因为n个输入元素共有n!种排 列,每一种都作为一个叶子出现在树中,故有n!≤l。 又由于在一棵高为h的二叉树中,叶子的数目不多 对该式取对数,得到 h≥lg(n!)=Ω(nlgn) 推论8.2堆排序和归并排序是渐进最优的比较算法 证明:堆排序和归并排序的运行时间上界O(nlgn)与定理 8.1给出的最坏情况下界Ω (nlgn)一致 7 h h 8 8.2 计数排序 计数排序假设n个输入元素中的每一个都是介于 0到k之间的整数,此处k为某个整数,当k=O(n) 时,技术排序的运行时间是O(n)。 计数排序的基本思想就是对每一个输入元素x, 确定出小于x的元素个数。有了这一信息,就可 以 把x直接放到它在最终输出数组中的位置上。 在计数排序算法中,我们假设输入时隔数组 A[1..n],length(A)=n。另外还需要两个数组: 存放排序结果的B[1..n],以及提供临时存数区 的C[1..k] 9 计数排序程序 COUNT-SORT(A,B,k) 1 for i←0 to k 2 do C[i]←0 3 for j←1 to length[A] 4 do C[A[j]] ← C[A[j]] + 1 5 ▹ C[i] 现在包含等于i的元素个数 6for i← 1 to k 7 do C[i] ← C[i] + C[i - 1] 8 ▹ C[i]现在包含小于或等于i的元素个数 7 for j← length[A] downto 1 8 do B[C[A[j]]] ← A[j] 9 C[A[j]] ← C[A[j]] - 1 10 计数排序过程 1 2 11 计数排序过程 3 4 12 计数排序过程 5 6 算法说明 在第9-11行中的for循环部分,把每个元素 A[j]放在输出数组B中与其相应的最终位置 上。如果所有n个元素都不相同,则当第 一次执行到第9行时,对每个A[j],值 C[A[j]]即为A[j]在输出数组中的最终正确位 置,因为共有C[A[j]]个元素小于等于A[j]。 由于各个元素可能不一定是不同的,因 此,每当将一个值A[j]放入数组B中时,都 要减少C[A[j]]的值。这会使得下一个其值 等于A[j]的输入元素(如果存在的话)直 接进入数组B中A[j]的前一个位置上 14 计数排序时间代价 计数排序时间代价 算法第1~2行的for循环所花时间为Θ(k)。第3~4行中for循环所 花时间为Θ(n),第6~7行for循环所花时间为Θ(k),第9~11行 的for循环所花时间为Θ(n)。这样,总的时间就是Θ(k+n)。实 践中,当k=O(n)时,运行时间为O(n)。 计数排序的特点 计数排序算法没有用到元素间的比较,它利用元素的实际 值来确定它们在输出数组中的位置,不是一个基于比较的 排序算法,从而它的计算时间下界不再

文档评论(0)

老师驿站 + 关注
官方认证
文档贡献者

专业做教案,有问题私聊我

认证主体莲池区卓方网络服务部
IP属地河北
统一社会信用代码/组织机构代码
92130606MA0GFXTU34

1亿VIP精品文档

相关文档