第一讲算法基础汇总.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 算法及基础知识;教材 《算法设计与分析》王秋芬、吕聪颖等编著 清华大学出版社 2011年8月 参考教材 1.《算法设计与分析》(第二版)王晓东编著 清华大学出版社 2008年1月 2. 《算法设计与分析——c++语言描述》陈慧南编著 电子工业出版社 2006年5月 《算法概论》(注释版). Sanjoy Dasgupta等著,钱枫等注释,机械工业出版社,2009 《算法导论》(第二版 影印版).(美) Corrmen. T. H. 北京:高等教育出版社,2002.5;主要内容;为什么要学习算法? 算法是计算机科学的基石。没有算法,计算机程序将不复存在 学习算法可以提高人们的分析能力。 算法可以看作是解决问题的一类特殊方法——它虽非问题的答案,但它是经过准确定义的,用来获得答案的过程。 无论是否涉及计算机,特定的算法设计技术都能看作是问题求解的有效策略。 算法的魅力:思考 程序=算法+数据结构 算法让我们上一个更高的台阶 ;一个皇室数学挑战问题(1202);兔子的繁殖;计算Fibonacci数;运行时间分析;指数级时间都那么糟糕吗?;剖 析;好的算法很重要!;学习算法要点: 理解算法的概念。 理解什么是程序,程序与算法的区别和内在联系。 掌握算法的计算复杂性概念。 掌握用C++/JAVA语言描述算法的方法。 ;1.1 算法的基本概念;输入性:有零个或多个外部量作为算法的输入。 输出性:算法产生至少一个量作为输出。 确定性:算法中每条指令清晰,无歧义。 有穷性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。(计算过程,时效) 可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。 ; 欧几里德算法 ;① 输入m 和n; ② 求m除以n的余数r; ③ 若r等于0,则n为最大公约数,算法结束; 否则执行第④步; ④ 将n的值放在m中,将r的值放在n中; ⑤ 重新执行第②步。;1.1.1 算法的4个标准;1.1.3 算法的描述形式;(2)算法框图法 优点:流程图、盒图,流程直观、简洁、明了,便于理解和交流 缺点:缺少严密性、灵活性 使用方法:描述简单算法 注意事项:注意抽象层次 ;N;(3) 伪代码语言描述法 伪代码(Pseudocode):介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。 (算法语言) 优点:表达能力强,抽象性强,容易理解; 1. r = m % n; 2. 循环直到 r 等于0 2.1 m = n; 2.2 n = r; 2.3 r = m % n; 3. 输出 n ;;(4)高级程序设计语言描述法 优点:能由计算机执行 缺点:抽象性差,对语言要求高 使用方法:算法需要验证 注意事项:将算法写成子函数;#include iostream.h int CommonFactor(int m, int n) { int r=m % n; while (r!=0) { m=n; n=r; r=m % n; } return n; } void main( ) { coutCommonFactor(63, 54)endl; };1.2 算法设计的一般过程;算法设计的一般过程 ;著名公式 Algorithm + Data Structure = Programming 好的算法 提高求解问题的效率 节省存储空间 需要解决的问题 问题?一个求解算法:算法设计技术 算法?算法的评价: 算法分析技术 ;1.3 算法分析;1.3 算法分析 三种情况下的复杂性(结合顺序查找操作) 最好情况Tmin(N) 1次 最坏情况Tmax(N) N次 平均情况Tavg(N) (N+1)/2 ;算法复杂性分析; 算法渐近复杂性态 设算法的运行时间为T(n),如果存在T*(n),使得 就称T*(n)为算法的渐进复杂性态或渐进时间复杂性。 ;举例: 假设算法A的运行时间表达式为T1(n) T1(n)=30n4+20n3+40n2+46n+100 假设算法B的运行时间表达式为T2(n) T2(n)=1000n3+50n2+78n+10 随着n的增大,对算法的执行时间影响最大的是最高次方。 算法A的运行时间可记为:T*1(n)≈

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档