第二部分 排序和顺序统计的学_清华大学.pdf

第二部分 排序和顺序统计的学_清华大学.pdf

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

第 部分:排序和顺序统计 2 学 选择 ( ) 《算法与算法复杂性》2017年春季 排序和顺序统计学 第6章 堆排序 堆、维护堆的性质、建堆、堆排序、优先队列 第7章 快速排序 快速排序的述、性能 快速排序的随机化版本、快速排序的分析 第8章 线性时间排序 比较排序算法的下界 线性时间排序: 计数排序、基数排序、桶排序 第9章 中位数和顺序统计学 最小值和最大值 以期望线性时间做选择 最坏情况线性时间的选择 2 排序算法 2 插入排序算法:O(n ),对小规模来说是一个快速的原地排序 算法 (在排序输入数组时,只有常数个元素被存放在数组以 外的空间中)。 合并排序有着较好的渐进运行时间Θ(nlgn),但是Merge程序 不在原地操作。 第六章:堆排序将在O (nlgn)时间内对n个数进行原地排序。 第七章:快速排序,最坏情况为 Q(n2) ,平均运行时间为 Θ(nlgn),在实际中常常优于堆排序算法,象插入排序算法一 样,快速排序的代码也比较紧凑,所以它的运行时间隐含的 常数因子就很小。 以上是比较排序,第八章的决策树模型证明其下界是nlgn 其它方法:线性时间排序、计数排序、基数排序、桶排序 6.1 堆 4 6.1 堆 (二叉)堆数据结构是一种数组对象,它可以被视为一颗完 全二叉树,树中每个节点和数组中存放该节点值的那个元 素对应。如果表示堆的数组为A ,那么树的根为A[1] 。 表示堆的数组A是一个具有两个属性的对象:length(A)是 数组中的元素个数,heap-size(A)是存放在A 中的堆的元素 个数;A[heap-size(A)]之后的元素都不属于相应的堆。也 就是:Heap-size(A)=length(A) 给定某个节点的下标i,其父节点PARENT(i),左儿子 LEFT(i)和右儿子RIGHT(i)可以表示为 PARENT(i): ëi / 2û LEFT(i): 2i RIGHT(i): 2i + 1 5 6.1 最大堆和最小堆 二叉堆有两种:最大堆和最小堆 对于最大堆,除了根以外的每个节点,有 A[PARENT(i)] ≥A[i] 这样,堆中的最大元素就存放在根节点中,并且在 以某一个节点为根的子树中,各节点的值都不大于 该子树根节点的值 对于最小堆,除了根以外的每个节点,有 A[PARENT(i)] ≤A[i] ,最小堆的最小元素在跟部。 堆可以被看成一棵树,节点在堆中的高度定义为 从本节点到叶子的最长简单下降路径上边的个数。 堆的高度定义为树根的高度,为Θ(lgn)。 6 6.2 保持堆的性质 MAX-HEAPIFY是对最大堆进行操作的重要的子 程序,调整A[i]在堆中的位置,使以i为根的子树 为最大堆。重要的假设条件 ! MAX-HEAPIFY(A,i) 1 l ← LEFT(i) 2 r ← RIGHT(i) 3 If l ≤ heap-size[A] and A[l] A[i] 4 then largest ← l 5 else largest ← i 6 If r ≤ heap-size[A] and A[r] A[largest] 7 then largest ←

文档评论(0)

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

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

1亿VIP精品文档

相关文档