摘要: 读书笔记 为了使得算法对所有输入都能有较好的期望性能,所以我们在算法中引入了随机性; 伪代码如下: RANDOMIZED-PARTITION(A, p, r) i = RANDOM(p, r) exchange A[r] with A[i] return PARTITION(A, p, r) RAN 阅读全文
posted @ 2021-01-15 10:47 ijkzen 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节对快速排序在三种情况下的性能进行了分析,我自觉没有书上说得好,所以直接上图片。 最好和最坏情况 平均情况 课后习题 7.2-1 利用代入法证明:正如7.2节开头提到的那样,递归式$T(n) = T(n-1) + \theta(n)$的解为$T(n)=\theta(n^2)$。 易证, 阅读全文
posted @ 2021-01-15 10:45 ijkzen 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了大名鼎鼎的快速排序,快速排序在最坏的情况下的时间复杂度为$\theta(n^2)$;在元素互异的情况下,期望时间复杂度为$O(n\lg)$。快速排序使用了分治思想,分治过程如下: 分解 数组$A[p..r]$被划分为两个(可能为空)的子数组$A[p..q-1]$和$A[q+1. 阅读全文
posted @ 2021-01-15 10:41 ijkzen 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节讲述了堆排序在实际中的应用--优先队列,优先队列可以在共享计算机操作系统进行作业调度。 最大优先队列支持如下操作: 插入 将元素$x$根据它的优先级插入到合适的位置; 实现过程 在最大堆的最末端插入一个无穷小的叶子节点,然后为这个节点赋值,然后使用递归调整该节点到合适位置; 伪代码 阅读全文
posted @ 2021-01-15 10:38 ijkzen 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 之前说过降序数组都是最大堆,但是反之不然,本小节讲述的是从最大堆中获取降序数组的过程; 伪代码如下: HEAPSORT(A) BUILD-MAX-HEAP(A) for i = A.length downto 2 exchange A[1] with A[i] A.heap-size = 阅读全文
posted @ 2021-01-15 10:37 ijkzen 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节讲述了将数组转化为最大堆的过程,伪代码如下: BUILD-MAX-HEAP(A) A.heap-size = A.length for i = A.length/2 downto 1 MAX-HEAPIFY(A, i) 课后习题 6.3-1 参照6-3的方法,说明$BUILD-MAX 阅读全文
posted @ 2021-01-15 10:35 ijkzen 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节主要讲述了将一个数组变成最大堆的过程; 事实上还是比较简单的,这里使用了递归的方法; 分解 将堆分为左堆和右堆 解决 递归地将左堆和右堆变成最大堆 合并 合并左堆和右堆变成整体的最大堆 课后习题 6.2-1 参照图6-2的方法,说明$MAX-HEAPIFY(A, 3)$在数组$A=< 阅读全文
posted @ 2021-01-15 10:34 ijkzen 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节首先介绍了__堆__的概念,然后又介绍了__二叉堆__的两种形式:最大堆和最小堆; 其中图$(a)\(是二叉堆逻辑上的结构,图\)(b)$是物理上的结构。如何从物理上的结构映射到逻辑的结构,通过下方的简单的函数进行映射。 最大堆 所有的父节点都__大于等于子__节点。 最小堆 所有的 阅读全文
posted @ 2021-01-15 10:29 ijkzen 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节分为两部分,第一部分陈述随机算法的必要性,第二部分介绍了两种随机算法并且证明了它们的正确性; 一个算法的执行效率需要一个随机算法的输入来检验; 优先级排序随机算法 过程如下: 为数组每个元素 $A[i]$赋一个随机的优先级$P[i]$,然后依据优先级对数组$A$中的元素进行排序。 伪 阅读全文
posted @ 2021-01-15 10:23 ijkzen 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节分为两部分,第一部分用复杂的语言讲解期望的计算方法,即值和概率乘积之和;第二部分使用第一部分讲述的方法计算期望; 有一个值得注意的地方,$\sum_{k=1}{n}{\frac{1}{n}} = \lnn + O(1)$的证明过程可以在附录A的A.2中找到。 \[ \sum_{k=1 阅读全文
posted @ 2021-01-15 10:22 ijkzen 阅读(289) 评论(2) 推荐(0) 编辑