- 1、本文档共94页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机算法概述(一)
教材: 算法设计与分析 吕国英主编 清华大学出版社 计算机算法基础 余祥宣等编 华中科大出版社 参考书: 算法设计与分析 王晓东编 清华大学出版社 计算机算法导引——设计与分析 卢开澄编 清华大学出版社 学时:4学时/周 与其他课程的关系 例2:三个牧师和三个野人过河,只有一条能装下两人的船,在河的任一边或者船上,若野人人数大于牧师人数,那么牧师就会有被吃掉的危险。你能不能找出一种安全的渡河算法呢? 学习目标:“用计算机求解问题” 一般计算机对现实问题无能为力,需要人类对问题抽象化、形式化后才能去机械的执行。 1.1 算法 1. 什么是算法? 算法是解一确定类问题的任意一种特殊的方法。 在计算机科学中,算法是使用计算机解一类问题的精确、有效方法的代名词: 算法是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。 2. 算法的五个重要特性 确定性、能行性、输入、输出、有穷性/有限性 3)输入 每个算法有0个或多个输入。这些输入是在算法开始之前给出的量,取自于特定的对象集合——定义域 计算过程:只满足确定性、能行性、输入、输出四个特性但不一定能终止的一组规则。 准确理解算法和计算过程的区别: 不能终止的计算过程:操作系统 算法是“可以终止的计算过程”。 算法的时效性:只能把在相当有穷步内终止的算法投 入到计算机上运行。 一般求d=gcd(m,n)的过程用自然语言可以描述如下: (1) 找出m的素因子。 (2) 找出n的素因子。 (3) 从第(1) (2)步求得的素因子中找出m,n的公共素因子。 (4) 将第(3)步找到的素因子相乘,其结果即为m,n的最 大公约数。 计算gcd(m,n)的短除法 算法设计:计算机没有“宏观”能力来“看出”公约数,但通过“枚举尝试”(逐个尝试)就可以“试出”m,n有哪些是公约数,并将这些公约数“累乘”,就能得到最大公约数。 计算gcd(m,n)的连续整数检测算法 第一步:将min{m,n}的值赋给d。 第二步:m除以d,若余数为0,进入第三步;否则第四步。 第三步:n除以d,若余数为0,返回d值(结果);否则第四步。 第四步:把d的值减1,返回第二步。 例如:对于60和24这两个数,该算法会先尝试24,然后是 23,这样一直尝试到12,算法结束。 欧几里德算法 gcd ( m, n ) = gcd ( n, m mod n ) gcd ( 24, 18 ) = gcd ( 18, 6 ) = gcd ( 6, 0 ) = 6 输入 正整数m和n 输出 m和n的最大公因子 如果n = 0, 计算停止返回m, m即为结果;否则继续2。 记r为m除以n的余数,即r=m mod n。 把n赋值给m,把r赋值给n,继续1。 伪代码如下: Euclid(m, n) { while n 0 { r = m % n; m = n; n = r; } } 下面是初学者易发生的问题,提前指出以引起注意: ① 通过输入语句增加算法的通用性。 ② 会忘掉“输出”或在模块间传递处理的数据结果。 ③ 易忽略细节造成“死循环”。 ④ 出现语序方面的错误,特别是双重循环中指令常有嵌 套错误。 ⑤ 注意学习和总结。 ⑥ 用大脑“运行”算法是学习算法很好的方法。 ⑦ 解题时要学会择优。简单说择优要考虑四个方面: 可读性、可修改性、时间效率和空间效率。 3.从算法到实现-算法基本技巧举例 a. 算术运算的妙用 例1.2 开灯问题 b. 巧用“标志量” 例1.3 判定输入n个数据互不相等 例1.4 冒泡排序 c. 信息数字化 例1.5 警察抓小偷 d. 学会找规律 例1.6 数组移位 a. 算术运算的妙用-例1.2开灯问题 算术运算:加减乘除。 a. 算术运算的妙用-例1.2问题分析/建模 问题分析: 1)用数组表示某种状态,这里定义有n个元素的a数组,它的每个下标变量a[i]视为一灯,i表
您可能关注的文档
最近下载
- 金属非金属矿山安全标准化规范地下矿山实施.doc VIP
- 工厂物料计划编制:流程、规范、4大编制方案.docx VIP
- 2025年预防接种技能竞赛预防接种管理测试题及答案.docx VIP
- YB-4001.1-2007钢格栅板及配套件-第1部分:钢格栅板(中文版).docx VIP
- 全国预防接种技能竞赛理论训练题库及答案(传染病学基础154题).docx VIP
- 环氧树脂的吸水研究.doc VIP
- 全国预防接种技能竞赛理论训练题库及答案冷链系统管理(89题).docx VIP
- 集装箱码头装卸作业与业务管理.pptx
- 闽楠轻基质容器育苗技术规程.pdf VIP
- 全国预防接种技能竞赛理论训练题库及答案(预防接种管理447题).docx VIP
文档评论(0)