- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * 机械电子工程教研室 仲志丹 软件技术基础 仲志丹 Johnsonzzd@ 机械电子工程教研室 控制工程基础 机械电子工程教研室 仲志丹 第3讲 算法 计算机软件技术基础 什么是算法? 欧几里德,公元前4世纪的伟大数学家。 欧几里德算法是能发现的最早的正式的对算法的描述,直至今日这个算法依然被广泛应用。 欧几里德算法(辗转相除法)描述了求解两个整数的最大公因子的解题步骤。要求解的问题描述为:“给定两个正整数m和n(mn),求它们的最大公因子,即能同时整除m和n的最大整数”。 欧几里德当时给出的算法如下: ⑴ 以n除m,并令所得余数为r,必有r=n; ⑵ 若r=0,输出结果n,算法结束;否则继续步骤⑶; ⑶ 令m=n和n=r,返回步骤⑴继续进行。 我们用gcd(m,n)表示计算m,n的最大公约数。那么欧几里德算法可以表示为下面的一个等式: gcd(m,n) = gcd(n,m mod b) 算法的定义 由此,我们可以得出这样的结论,算法就是求解问题的方法和步骤。 这里的方法和步骤是一组严格定义了运算顺序的规则; 每一个规则都是可行的,且是明确的; 按此顺序将在有限次数下终止。 算法的基本特性 可行性:一个算法是可行的,即算法中描述的操作都可通过已经实现的基本运算执行有限次来实现。 确定性:一个算法中每一条指令必须有确切的含义,不会产生二义性。 有穷性:一个算法必须在执行有穷步之后结束,且每一步都可以在有穷时间内完成。 输入:一个算法有零个或多个输入。 输出:一个算法有一个或多个输出。 算法的基本要素 数据对象的运算和操作 1,算术运算:加减乘除等运算 2,逻辑运算:或、且、非等运算 3,关系运算:大于、小于、等于、不等于等运算 4,数据传输:输入、输出、赋值等运算 算法的控制结构 算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。 程序语言表示 计算机程序设计语言,是计算机能够接受、理解和执行的算法描述工具。 计算机不能直接识别自然语言、流程图、N-S图和伪代码等工具描述的算法,而设计算法的目的就是要用计算机来解决问题,算法最终都要用某一具体的计算机程序设计语言来表示。 辅助工具 和自然语言一样,计算机程序设计语言也是串行的描述,很不直观。 对于较复杂的问题,人们很难用计算机程序设计语言直接写出程序。 所以在算法设计阶段,一般是先采用某个专用的辅助工具来描述算法,再把它转化为某一具体程序设计语言描述的程序。 欧几里德算法的程序实现 欧几里德算法的伪代码 while n != 0 do r = m mod n m = n n = r return m C语言实现 int gcd (int m,int n) { int r; while (n 0){ r = m % n; m = n; n = r; } return m; } 算法的评价标准 正确性:能够正确求解给定的问题 可读性:易于供人们阅读、理解和交流 健壮性:要能经得起一切可能的输入数据的考验 高效性:执行效率要高可分为时间效率和空间效率 简洁性:简洁就是美 算法的复杂度分析 算法的时间复杂度 所谓算法的时间复杂度,是指执行算法所需要的计算工作量 算法的空间复杂度 主要考虑除存储数据结构之外所需要的辅助存储空间 算法的时间复杂度 为了能够比较客观地反映出一个算法的效率,可以用算法在执行过程中所需基本运算的执行次数来度量算法的计算量。 基本运算反映了算法运算的主要特征,有利于比较同一问题的几种算法的优劣。 空间复杂度 为了执行程序所占用的存储空间包括如下三个方面: 存储程序本身所占用的存储空间。 输入和输出数据所占用的存储空间。 在执行过程中临时占用的存储空间(是算法着重研究的方面)。 度量一个算法或程序在执行过程中所花费的额外存储开销(即临时存储工作单元)的大小也是用大O方法,度量的结果称之为算法的空间复杂度。 空间复杂度和时间复杂度一样,也是用相对于问题规模n的函数的渐近阶形式给出,如O(1)、O(n)等。 比如交换两个变量时,设了第三个变量,那么它的空间复杂度就是O(1) 空间复杂度 辩证关系 在一定范围和限度内,算法的时间复杂度和空间复杂度可以同时改善。 当算法优化到一定程度,其时间复杂度和空间复杂度一般就会产生矛盾,只能通过增加额外空间来提高算法速度,或通过延长运行时间来节省占用的内存空间。 鉴于目前硬件成本的迅速降低
原创力文档


文档评论(0)