算法导论-笔记
文章平均质量分 61
gainsuper
这个作者很懒,什么都没留下…
展开
-
《算法导论》第六章 堆排序 笔记
堆排序堆排序不同于归并排序的是,堆排序具有和插入排序一样的空间原址性,任何时候都只需要常数个额外的元素空间存储临时数据。因此,堆排序是集合了插入排序和归并排序两种算法优点的排序方法。6.1 堆(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素,除了最底层,该树是完全充满的,而且是从左到右填充。给定下面三个函数(这里计算左右孩子的方式说明数组是从1开始编号的,原创 2017-01-04 21:52:26 · 412 阅读 · 0 评论 -
算法导论 第七章 快速排序
快速排序快速排序通常是实际应用中最好的选择,因为它的平均性能非常好,它的期望时间复杂度为O(nlng), 而且隐含的常数因子非常小。另外,它还是原址排序。7.1 快速排序的描述QUICKSORT(A, p, r) if p<r q=PARTITION(A, p, r) QUICKSORT(A, p, q-1) QUICKSORT(A, q+1,原创 2017-01-04 22:59:51 · 320 阅读 · 0 评论 -
算法导论 第八章 线性时间排序
线性时间排序之前的几种排序,有一个有趣的性质:在排序的最终结果中,各元素的次序依赖于他们之间的比较。我们把这类算法叫做比较排序。8.1 排序算法的下界决策树模型比较排序可以被抽象成一棵决策树。决策树是一棵完全二叉树,它可以表示在给定输入规模情况下,某一特定排序算法对所有元素的比较操作。最坏情况的下界在决策树中,从根结点到任意一个可达叶结点之间最长简单路径的长度,表示的是对应的决策算法中最坏情况下的比原创 2017-01-05 08:56:40 · 338 阅读 · 0 评论 -
算法导论 第九章 中位数和顺序统计量
中位数和顺序统计量在一个由n个元素组成的集合中,第i个顺序统计量(order statistic)是该集合中第i小的元素。min是第一个,max是第n个。9.1 最小值和最大值MINIMUM(A) min=A[1] for i=2 to A.length if min>A[i] min=A[i] return min 可以同时找到最小值和最大值原创 2017-01-05 09:19:39 · 735 阅读 · 0 评论 -
算法导论 第十章 基本数据结构
基本数据结构10.1 栈和队列栈(LIFO)栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素都是预先设定的。STACK-EMPTY(S) if S.top==0 return TRUE else return FALSEPUSH(S, x) S.top=S.top+1 S[S.top]=xPOP(S) if STA原创 2017-01-05 20:26:15 · 518 阅读 · 0 评论 -
算法导论 第十一章 散列表
散列表散列表是实现字典操作的一种有效数据结构。散列表是普通数组概念的推广,由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置。如果存储空间允许,我们可以提供一个数组,为每个可能的关键字保留一个位置,以利用直接寻址技术的优势。当实际存储的关键字数目比全部的可能关键字总数要小时,采用散列表就成为直接数据寻址的一种有效替代,因为散列表使用一个长度与实际存储的关键字数目成比例的数据来存储原创 2017-01-05 20:27:07 · 468 阅读 · 0 评论 -
算法导论 第十二章 二叉搜索树
二叉搜索树 搜索树数据结构支持许多动态集合操作,包括SEARCH/MINIMUM/MAXIMUM/PREDECESSOR/SUCCESSOR/INSERT/DELETE等。因此,我们是用一棵搜索树既可以作为一个字典又可以作为一个优先队列。 二叉搜索树的基本操作所花费的时间与这棵树的高度成正比(所以相同的数据,组织成二叉搜索树后,其高度越低,则用于搜索时效率越高)。一棵随机构造的二叉搜索树的期望原创 2017-01-05 22:01:02 · 408 阅读 · 0 评论