《算法导论》课后题--1--第二章(0)
来源:互联网 发布:照片大小修剪软件 编辑:程序博客网 时间:2024/05/22 03:23
2.1-3
分析:本题内容是“线性查找问题”,考查伪代码的书写,还有“循环不变量”的概念考查;
作答:
(1)伪代码:
LINEAR-SEARCH(A,v)1i = NIL2for j = 1 to A.length3if A[j] == v4i = j5return i6return i(2)循环不变式:
关于循环不变式,没太理解,尝试着写写,
循环不变式:变量i中始终存放着迭代进行到当前的应该返回的值。
初始化:j = 1 时,i = NIL,此时还未与数组中的数进行比较,默认不存在,返回NIL,正确;
保持:若某一次迭代结束,函数没返回,说明当前还没找到,i = NIL,依然没变;在本次迭代进行后,若找到,则返回当前j值,若没找到,则进行下一次迭代,i = NIL,依然保持不变;
终止:当在某一次迭代中找到后,立马返回,若循环结束没有找到,则返回i = NIL。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.1-4
分析:本题内容是“两个n为二进制整数的加法”,考察点是算法问题的形式化描述,伪代码;
作答:
(1)形式化描述:
输入:
输出:,存放加法运算结果
(2)伪代码:
ADD(A,B)1let C[1..A.length+1] be new array2k = 0//存储进位数值,初试为03for i = A.length downto 14t = A[i] + B[i] + k;//t = 0,1,2,35C[i] = t % 2;6k = t / 2;//保存进位用作下一次位的运算7C[C.length] = k;//k中存储的A,B两位最高位运算结果的进位-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.2-2
分析:本题内容是“选择排序算法”,考查伪代码的书写、循环不变式等;
作答:
(1)伪代码:
输入:待排序的数组A输出:排序后的数组(单调不减排序)SELECTION-SORT(A)1for i = 1 to A.length-12index = i //index中存储第i轮迭代中的最小值的下标3for j = i + 1 to A.length4if A[index] > A[j]5index = j6tmp = A[index];7A[index] = A[i]8A[i] = tmp(2)循环不变式:
A[1..i-1]中保存着已排好序的子数组,初始化、保持、终止三条性质均满足;
(3)运行时间:
SELECTION-SORT(A)代价最好最坏1for i = 1 to A.length-1c1nn2index = i c2n-1n-13for j = i + 1 to A.length c3(n+2)(n-1)/2(n+2)(n-1)/24if A[index] > A[j] c4n(n-1)/2n(n-1)/25index = jc50n(n-1)/26tmp = A[index];c6n-1n-17A[index] = A[i]c7n-1n-18A[i] = tmpc8n-1n-1
经计算求和,最好最坏情况均为:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.2-3
分析:内容为“线性查找”,考查计算时间复杂度相关问题;
作答:
(1)要查找的元素等可能的分布在数组中时:此时输入服从均匀分布,计算查找次数的期望即可,为:(n+1) / 2;
最坏情况时:此时每次都得执行n次查找;
(2)平均情况和最坏情况均为:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
万事开头难,加油!!!
- 《算法导论》课后题--1--第二章(0)
- 《算法导论》课后题--2--第二章(1)
- 算法导论(三版):第二章第一节课后题
- 《算法导论》课后题--3--第二章(2)
- 算法导论课后习题第二章(1)
- 算法导论(三版):第二章第二节课后题
- 算法导论课后习题第二章(2)
- 算法导论课后习题解析 第二章
- 算法导论(三版):第二章第三节课后题
- 《算法导论》课后题--5--第四章(0)
- 《算法导论》课后题--6--第四章(1)
- 《算法导论》系列课后思考题之-第二章《算法入门》
- 算法导论第二章课后习题代码实现
- 算法导论(三版):第一章第二节课后题 以及 第一章思考题
- 《算法导论》课后题--7--第四章(2)
- 《算法导论》课后题--4--第三章
- 《算法导论》课后题--0--第一章
- 算法导论第二章
- Ubuntu ssh免密码登陆
- iOS面试题----中软
- 计算机网络之面试常考
- Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果
- 分布式架构学习之:015--ActiveMQ 的安装与使用(单节点)
- 《算法导论》课后题--1--第二章(0)
- Struts2显示没有action name
- 质因数分解QwQ 2043洛谷oj
- Java数据类型的互相转换
- 数据压缩原理实验4_DPCM编解码
- C类型与数值存储
- 山东第八届acm大赛F题quadratic equation,山东理工oj 3898
- 05-树7 堆中的路径 (25分)
- 关于解决SSM-shiro的Spring注入问题