- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章问题求解与算法scx分析
第5章 问题求解与算法;;5.1 计算思维;“计算思维是运用计算科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动”,“其本质就是抽象与自动化,即在不同层面进行抽象,以及将这些抽象机器化”。计算思维(设计与构造)、理论思维(推理与演绎)和实验思维(观察与总结)称为三大思维。;5;计算思维的特征
① 计算思维是人类求解问题的一条途径。
② 计算思维的过程可以由人执行也可以由计算机执行。
③ 计算思维是思想。
④ 计算思维是概念化,不是程序化。
计算思维在计算机学科中的体现
① “0和1”的思维。
②“指令”与“程序”的思维。
③“递归”的思维。;冯·诺依曼计算机体现了存储程序与程序自动执行的基本思维,实现了在存储体系环境下,程序在操作系统管理下的执行的基本思维。
并行与分布计算环境应用于局域网/广域网的计算系统的构建,体现了在复杂环境程序如何被硬件并行、分布执行的思维。
云计算环境实现了由高性能计算结点和大容量磁盘存储结点结合,体现是计算资源虚拟化服务化的思维。;其它学科均可应用计算手段进行学科问题的研究和创新。
学科融合是计算思维带给广泛的学科问题求解的一种思想、策略、方法和手段上的变化,为科学研究和科学应用提供新的思路、方法和技术,融合正在促进各学科的突破性发展。
思维是由一系列知识所构成的完整的解决问题的思路,其每个环节都需要知识的铺垫,基于一定的知识可理解每一个环节,通过“贯通”各个环节进而解决问题。计算思维是学科的灵魂、学科的重要思想,计算思维对各学科专业的影响是深远的。;5.2 算法;概念
指解题方案准确而完整的描述,是一系列解决问题的方法步骤或清晰指令的陈述。代表着用系统的方法描述解决问题的策略机制。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
要素:由操作与控制结构两个要素组成。
性质:确定性、可实现性、具有数据输入、具有数据输出、有穷性
描述方法有如:自然语言、流程图、伪代码和计算机语言。
;步骤描述法,即用人们日常使用的语言和数学语言描述算法的步骤。
例如:sum=1+2+3+4+…+n求和问题的算法描述
Start of the algorithm(算法开始)
(1)输入N的值;
(2)设 i 的值为1;sum的值为0;
(3)如果 i=N,则执行第(4)步,否则转到第(7)步执行;
(4)计算 sum + i,并将结果赋给sum;
(5)计算 i+1,并将结果赋给i;
(6)返回到第3步继续执行;
(7)输出sum的结果。
End of the algorithm(算法结束)
;流程图的基本表示符号
矩形框:表示一组顺序执行的规则或者程序语句。
菱形框:表示条件判断,并根据判断结果执行不同的分支。
圆形框:表示算法或程序的开始或结束。
箭头线:表示算法或程序的走向。;三种控制结构的流程图表示方法示意;3.伪代码;也叫枚举法,就是通过把需要解决问题的所有可能情况逐一试验来找出符合条件的解的方法。
基本思想是按照问题要求确定问题解的大致范围,然后在此范围内对这些可能解列举,再判断所列举的可能问题解满足不满足问题的要求,直到所有可能解列举完毕。
在实际生活中,只有很少的一些问题是真正意义上的“毫无规律”,大多数仍有内在规律可循,所以使用穷举法在效率上就显得比较低下。
如求100以内的素数,需逐个判断。;使一组数据,按照其中的某个或某些关键字的大小,按递增或递减的顺序排列起来的操作。
在大量数据的处理方面,一个优秀的算法可以节省大量的资源。
①直接插入排序
将一个记录插入到已排序好的有序表中,从而得到一个新的记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列有序为止。;②希尔排序
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。;③简单选择排序
在要排序的一组数中,选出最小(大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(大)的与第2个位置的数交换,依次类推,直到第n-1个元素和第n个元素比较为止。;④冒泡排序
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻两数进行比较,每当两相邻数比较后发现顺序与要求相反时,互换两数。
;递归算法是一种直接或者间接地调用自身算法的过程。特点:
①递归就是在过程或函数里调用自身。
②在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
③递归算法解题虽然很简洁,但解题的运行效率较低。所以一般不提倡用递归算法设计程序。
④在递归调用的过程当中,系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出
文档评论(0)