
算法导论
moqiluoji
这个作者很懒,什么都没留下…
展开
-
算法导论(第三章)思考题2-4 假设A[1..n]是一个有n个不同数的数组.
题干如下:假设A[1..n]是一个有n个不同数的数组.若i<j且A[i]>A[j],则对偶(i,j)称为A的一个逆序对(inversion).a. 列出数组<2,3,8,6,1>的5个逆序对.b. 由集合{1,2,...,n}中的元素构成的顺me数组具有最多的逆序对?它有多少逆序对?c.插入排序的运行时间与输入数组中的逆序对的数量之间是什么关系?证明你的回答...原创 2020-03-16 16:00:27 · 2532 阅读 · 0 评论 -
算法导论(第三版)第二章练习题2.1-4考虑把两个n位二进制整数加起来的问题-php版代码
function addAction(){ // 第一个二进制数 $binary_a = [1, 0, 1, 1, 1, 1, 0]; // 第二个二进制数 $binary_b = [1, 0, 1, 1, 1, 1, 0]; // 结果的二进制数 $binary_c = []; // 是否有进位 默认初始值没有进位 $has_a...原创 2020-03-09 13:08:28 · 554 阅读 · 0 评论 -
算法导论(第三版)第二章练习题2.2-1 考虑排序存储在数组A中的n个数...
题干如下:考虑排序存储在数组A中的n个数: 首先找出A中最小元素 并将其与A[1]中元素进行交换. 接着,找出A中次小元素并惊奇与A[2]中元素进行交换.对A中前n-1个元素按该方式继续.该算法称为选择算法,写出其伪代码该算法维持的循环不变式是什么?为什么它只需要对前n-1个元素 而非所有n个元素运行?用θ几号给出选择排序的最好情况与最坏情况运行时间.(1)funct...原创 2020-03-09 14:11:05 · 1293 阅读 · 0 评论 -
算法导论(第三版)第二章练习题2.3-2 重写MERGE,使之不使用哨兵...-php
题干:2.3-2 重写过程MERGE,使之不使用哨兵,而是一旦数组L或R所有元素均被复制回A就立刻停止,然后把拎一个数组的剩余部分复制回A.function mergeAction(){ $L = [1, 3, 5, 6]; $R = [2, 4, 7, 8]; $A = []; $i = 0; $j = 0; $k = 0; whi...原创 2020-03-09 17:47:53 · 298 阅读 · 0 评论 -
算法导论(第三版)第二章2.3-3 使用数学归纳法证明...
题干:使用数学归纳法证明: 当n刚好是2的幂时,以下递归式的解是T(n)=nlgn.递归式的内容:T(n) = 2 (若n = 2)T(n) = 2T(n/2)+n (若n = 2^k, k > 1)计算步骤:1. 先计算证明 在递归式的开始部分 解能成立;2. 再证明递归式的第二部分内容:3. 先将原递归式写为带有不同变量的部分 比如这次的例题里 T(...原创 2020-03-10 15:44:49 · 1775 阅读 · 1 评论 -
算法导论(第三版)第二章2.3-4 / 2.3-5
2.3-4 我们可以把插入排序表示为如下的一个递归过程.为了排序A[1...n], 我们递归地排序A[1..n-1],然后把A[n]插入已排序的数组A[1..n-1].为插入排序的这个递归版本的最坏情况运行时间写一个递归式.最坏运行情况T(n)T(n) = 0(n=1时)T(n) = T(n-1) + n思考过程:当只有一个数需要排序时 不用时间;当有2个数时 第二个...原创 2020-03-10 16:49:32 · 541 阅读 · 0 评论 -
算法导论(第三版)第二章2.3-5 回顾查找问题(参见联系2.1-3)...
题干:回顾查找问题(参见联系2.1-3),注意到如果序列A已排好序,就可以将该序列的中点与v进行比较.根据比较的结果,原序列中就有一半可以不用再做进一步的考虑了.二分查找算法会重复这个过程,每次都将序列剩余的部分规模减半为二分查找写出迭代或递归的伪代码证明: 二分查找最坏情况运行时间为θ(lgn)附:考虑以下查找问题:输入: n个数的序列A=<a1,a2,....原创 2020-03-10 17:00:01 · 341 阅读 · 0 评论 -
算法导论(第三版)第二章2.3-6 注意到2.1节中的过程insertion-sort的第5~7行...
注意到2.1节中的过程insertion-sort的第5~7行的while循环采用一种线性查找来(反向)扫描已排好序的子数组A[1...j-1].我们可以使用二分查找(参见练习2.3-5)来把插入排序的最坏情况总运行时间改进到θ(nlgn)吗?INSERTION-SORT(A):1 for j = 2 to A.length2 key = A[j]3 ...原创 2020-03-10 18:08:59 · 439 阅读 · 0 评论 -
算法导论(第三版)第二章2.3-7 描述一个运行时间为θ(nlgn)的算法......
算法导论(第三版)第二章2.3-7 题干:描述一个运行时间为θ(nlgn)的算法 给定n个整数的集合S和另一个整数X,该算法能确定S中是否存在两个其和刚好为x的元素.// 设置两种下标// 第一个下标的取值 从数组的第一个 到数组的倒数第二个 作为外层循环// 第二个小标 根据二分法取值 从比第1个下标大1位的位置 到数组最后一个位置 作为内层循环内层循环中:假如所有元素除去第一...原创 2020-03-11 14:19:24 · 741 阅读 · 0 评论 -
算法导论(第三版)第一章练习思考题1-1答案 运行时间比较 假设求解的算法需要f(n)毫秒...
假设求解问题的算法需要f(n)毫秒,对下表中的每个函数f(n)和时间t,确定可以在时间t内求解的问题的最大规模n。 1秒 1分钟 1小时 1天 1个月 1年 1个世纪 lgn Sqrt(n) n ...原创 2020-03-06 13:47:01 · 3158 阅读 · 8 评论 -
算法导论(第三版)第二章练习思考题2-3 (霍纳(Horner)规则的正确性) 给定系数a0,a1,...,an 和 x的值...
题干:(霍纳(Horner)规则的正确性) 给定系数a0,a1,...,an 和 x的值,代码片段1 y = 02 for i = n downto 03 y = ai + x*y实现了用于求值多项式 的霍纳规则a.借助θ记号实现霍纳规则以上代码片段的运行时间是多少b.编写伪代码来实现朴素的多项式求值算法,该算法从头开始计算多项式的每个项 该算...原创 2020-03-16 14:46:39 · 563 阅读 · 0 评论 -
算法导论(第三版)第二章思考题2-2 (冒泡排序的正确性) 冒泡排序是一种流行但低效的排序算法...
(冒泡排序的正确性) 冒泡排序是一种流行但低效的排序算法,它的作用是反复交换相邻的未按次序的排列的元素.BUBBLESORT(A) 1 for i = 1 to A.length - 1 2 for j = A.length downto i + 1 3 if A[j] < A[j - 1] 4 excha...原创 2020-03-16 10:49:43 · 622 阅读 · 0 评论 -
算法导论(第三版)第二章思考题2-1 (在归并排序中对最小数组采用插入排序) 虽然归并排序的最坏情况运行时间为...
2-1(在归并排序中对最小数组采用插入排序) 虽然归并排序的最坏情况运行时间为θ(nlgn),而插入排序的最坏情况运行时间为θ(n2n2),但是插入排序中的常量因子可能使得它在n较小时,在许多机器上实际运行得更快。因此,在归并排序中当子问题变得足够小时,采用插入排序来使递归的叶变粗是有意义的。考虑对归并排序的一种修改,其中使用插入排序来排序长度为k的n/k个子表,然后使用标准的合并机制来合并这些子...原创 2020-03-13 17:48:15 · 941 阅读 · 0 评论