讨论小课堂和习题解答
更新时间:2023-10-09 07:50:02 阅读量: 综合文库 文档下载
- 讨论式课堂推荐度:
- 相关推荐
讨论小课堂 1
1.算法和程序的区别是什么呢?
【参考答案】:算法的含义与程序十分相似,但又有区别。一个程序不一定满足有穷性。例如,操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。另一方面,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。一个算法若用程序设计语言来描述,则它就是一个程序。
算法与数据结构是相辅相承的。解决某一特定类型问题的算法可以选定不同的数据结构,而且选择恰当与否直接影响算法的效率。反之,一种数据结构的优劣由各种算法的执行来体现。
要设计一个好的算法通常要考虑以下的要求。
⑴正确。算法的执行结果应当满足预先规定的功能和性能要求。 ⑵可读。一个算法应当思路清晰、层次分明、简单明了、易读易懂。 ⑶健壮。当输入不合法数据时,应能作适当处理,不至引起严重后果。 ⑷高效。有效使用存储空间和有较高的时间效率。
2,你认为应该如何评估一个数据结构或算法的有效性。
【参考答案】:前提之一是算法的正确性;其二还必须考虑执行算法所耗费的时间和执行算法所耗费的空间(主要是只指辅助空间),以及算法是否易读、易编码和易于调试。
习题1
1. 抽象数据类型的定义由哪几部分组成? 【参考答案】:数据对象、数据关系和基本操作三部分。 2. 按数据元素之间的逻辑关系不同,数据结构有哪几类? 【参考答案】:线性结构、树型结构、图状结构和集合四类。 5.数据结构和数据类型两个概念之间有区别吗?
【参考答案】:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。
6. 简述线性结构与非线性结构的不同点。 【参考答案】:线性结构反映结点间的逻辑关系是 一对一的,非线性结构反映结点间的逻辑关系是多对多的。 7. 有下列两段描述:
(1)void pro1( ) (2)void pro2( ) { {
n=2; y=0; While(n%2==0) x=5/y;
n=n+2; printf(―%d,%d\\n,x,y); printf(―%d\\n‖,n); }
}
这两段描述均不能满足算法的特征,试问它们违反了算法的那些特征?
【参考答案】:(1)是一个死循环,违反了算法的有穷性特征。(2)出现除零错误,违反了算法的可行性特征。
8. 分析并写出下面的各语句组所代表的算法的时间复杂度。 (1) for (i=0; i for (j=0; j A[i][j]=0; 【参考答案】:O(m*n) (2) k=0; for( i=1; i<=n; i++) { for (j=i ; j<=n; j++) k++; } 【参考答案】:O(n2) (3) i=1; while(i<=n) i=i*3; 【参考答案】:3 T(n)≤n即:T(n) ≤log3n =O(log3n)所以:T(n)= O(log3n) (4) k=0; for( i=1; i<=n; i++) { for (j=i ; j<=n; j++) for (k=j ; k<=n; k++) x += delta;; } 【参考答案】:O(n3) (5) for(i=0,j=n-1;i {t=a[i]; a[i]= a[j]; a[i]=t;} 【参考答案】:基本语句共执行了n/2次,T(n)=O(n) (6) x=0; for(i=1; i x++; 【参考答案】:因为x++共执行了n-1+n-2+??+1= n(n-1)/2,所以执行时间为O(n2) 讨论小课堂2 1. 在一个非递减有序线性表中,插入一个值为X的元素,使插入后的线性表仍为非递减有序。(注意:对比顺序存储结构和链式存储结构表示。) 【参考答案】 ⑴方法一:顺序存储结构 void insert(ElemType x) { i=length-1; while(i>=0&&elem[i]>x) {elem[i+1]=elem[i]; i--; } elem[i+1]=x;length++; } ⑵方法二:链式存储结构 void insert(ElemType x) { NodeType *p,*q,*s; p=L;q=q->next; while(q!=NULL&&q->data<=x) {p=q;q=q->next;} s=new NodeType; s->data=x; p->next=s; s->next=q; } 2.观察下面的算法,此算法完成如下功能:在非递减有序表中删除所有值为X的元素。问:如何改进此算法,使得算法效率提高? void Deletaz(ElemType x) { int i=0,j; while (i { for(j=I;j } } 【答案】 void delete(ElemType x) { int i=0,j,n; while(i while(elem[i]==x) {n++;i++;} for(j=i;j 3.试设计一个算法,将线性表中前 m 个元素和后 n 个元素进行互换,即将线性表 (a1, , ?, am, b1, b2, ?, bn ) 改变成 (b1, b2, ?, bn, a1, a2, ?, am ) 要求采用顺序存储结构及链式存储结构分别完成,并比较采用这两种存储结构,其算法效率哪种存储结构更好? 【答案】试设计一个算法,顺序表中前 m 个元素和后 n 个元素进行互换,即将线性表 (a1, a2, ?, am, b1, b2, ?, bn ) 改变成 (b1, b2, ?, bn, a1, a2, ?, am ) 。 算法 1:进行三次“逆转顺序表”的操作。 算法 2:从 b1开始,从原地删除之后插入到 a1 之前直至 bn。 例如:具体实例:{ a, b, c, d, e, f, g ,1, 2,3,4,5}改变成{1, 2,3,4,5,a, b, c, d, e, f, g} 1 2 3 4 5 a b c d e f g 3 1 2 3 i j a b c d e f g 4 5 算法 1: void invert( ElemType R[],int s, int t ) /* 本算法将数组 R 中下标自 s 到 t 的元素逆置, 即将(Rs, Rs+1, …, Rt-1, Rt ) 改变为(Rt, Rt-1, …, Rs+1, Rs )*/ void exchange ( SqList A; int m ) { /*本算法实现顺序表中前 m 个元素和后 n 个元素的互换*/ n = A.length – m; invert( A.elem, 0, A.length ); invert( A.elem, 0, n-1 ); invert( A.elem, n, m+n-1 ); } 算法 2: void exchange( SqList A, int m ) { /* 实现顺序表 A 中前 m 个元素和后 n 个元素互换*/ for ( i=0; j = m; ji; k-- ) A.elem[j] = A.elem[j-1]; A.elem[i] = x; } 算法的时间复杂度:为: O(m?n) 算法设计:
正在阅读:
讨论小课堂和习题解答10-09
2020年普通党员自查自纠报告3篇09-12
新初一如何规划你的学习05-27
专科徽章及其他奖章01-16
2018-2024年中国光纤传感器行业市场分析及投资可行性研究报告09-27
企业获奖感言02-27
量子力学 曾谨言 习题解答11-16
南方航空乘务员报名表10-13
历年专四作文真题1992-201005-12
学习4阶段水稻病虫害防治病害 - 图文11-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 习题
- 课堂
- 解答
- 讨论
- 热力学与统计物理第九章答案
- 研究生英语(提高版)课后习题及翻译
- c++课程设计(小型商品销售管理系统)
- 箱涵施工技术方案
- 高二化学上册第一次月考试卷9
- 塔吊基础方案(灌注桩)-fcb
- grammar exercises
- 数字图像处理实验报告 - 图像分割实验
- 高一语文双基训练(11)
- 2015年新《非煤矿矿山企业安全生产许可证实施办法》
- 领导关心-上海自强社会服务总社
- 血液净化室制度
- 2013-2014电大会计学本科财务案例分析开卷答案
- 迎接新时代的挑战 做好跨世纪的组织工作
- 英文电影台词语法归类--宋扬
- 浅谈城市轨道交通屏蔽门系统的故障处理
- 电路反馈类型判断
- 投入产出数学模型练习题解答 数学建模
- 急诊三基本习题及答案
- 沥青碎石基层工程检验批质量验收记录表