《算法导论》答案.pdf

  1. 1、本文档共210页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目 录 前言 第6章 堆排序 6-3 Young氏矩阵 第7章 快速排序 第8章 线性时间排序 第9章 排序和顺序统计学算法导论 算法导论 9.1-1 求第二小元素 第10章 10.1 栈和队列 第10章 10.2 链表 第10章 10.3 指针和对象实现 第10章 10.4 有根树的表示 第11章-散列表 第12章 二叉查找树 第13章 红黑树 第14章 14.1 动态顺序统计 算法导论-14-1-最大重叠点 算法导论-14-2-Josephus排列 第14章 14.3 区间树 第15章 动态规划 第16章 贪心算法 第18章 B树 第19章-二项堆 第20章 斐波那契堆 第21章 用于不相交集合的数据结构 第22章 图的基本算法 22.1 图的表示 第22章 图算法 22.2 广度优先搜索 第22章 图算法 22.3 深度优先搜索 第22章 图的基本算法 22.4 拓扑排序 第22章 图的基本算法 22.5 强联通分支 本文档使用 看云 构建 - 2 - 前言 前言 原文出处 :《算法导论》答案 作者 :何一娜 本系列文章经作者授权在看云整理发布 ,未经作者允许 ,请勿转载 ! 《算法导论》答案 《算法导论》是不可多得的经典算法教材 ,值得我们深入理解 ,仔细分析。本系针对 《算 法导论》中文版原书第2版所写的答案 ,代码均用C++实现。不保证完全正确 ,旨在抛砖 引玉。 本文档使用 看云 构建 - 3 - 第6章 堆排序 第6章 堆排序 一、概念 1.堆heap 堆的本质是一种数组对象 ,数组下标从1开始 堆可以被视作一棵完全二叉树 ,二叉树的层次遍历结果与数组元素的顺序对应 ,树根为 A[1]。 对于数组中第i个元素 ,其对应在二叉树中的父母孩子结点位置的计算如下 : PARENT(i) return i/2 LEFT(i) return 2i RIGHT(i) return 2i+1 2.最大/小堆(max-heap/min-heap) 从二叉树的角度看 ,对于所有非root结点 ,满足 node-parent ≥ node / node-parent ≤ node 从数组的角度看 ,对于所有下标大于1的元素 ,其下标为i ,则满足 A[PARENT( i)] ≥ A[i] / A[PARENT( i)] ≤ A[i] 3.高度height 结点的高度 :从结点到叶子所经过的边的数量 ,叶子结点的高度为0 二叉树的高度 :树中高度最高的结点的高度 ,只有一个结点的树高度为0 堆的高度 :把堆看所作二叉树时的高度 二、程序 1.堆的结构 A[N] :堆数组 length[A] :数组中元素的个数 heap-size[A] :存放在A中的堆的元素个数 本文档使用 看云 构建 - 4 - 第6章 堆排序 2.在堆上的操作 (1 )MAX-HEAPIFY(A, i) (2 )BUILD-MAX-HEAP(A) (3 )HEAPSORT(A) 3.堆的应用 优先级队列 (1 )HEAP-MAXIMUM(A) (2 )HEAP-INCREASE-KEY(A, i, key) (3 )HEAP-EXTRACT-KEY(A) (4 )MAX-HEAP-INSERT(A, key) 4.堆代码 产品代码 测试代码 5.排序代码 产品代码 测试代码 三、练习 6.1 堆 6.1-1 最多2^(h+1) - 1 , 最少2 ^ h (当树中只有一个结点时 ,高度是0 ) 6.1-2 上一题结论 2^h n 2^(h+1) - 1 h

文档评论(0)

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

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

1亿VIP精品文档

相关文档