《算法设计与分析》.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 算法设计与分析 * 课后练习 1. 算法分析题: 1-1 求下列函数的渐近表达式: 1-2 试论O(1)和O(2)的区别。 1-3 按照渐近阶从低到高的顺序排列以下表达式: * 算法设计与分析 * 课后练习 1-4 ①假设某算法在输入规模为n时的计算时间为T(n)=3×2n。在某台计算机上实现并完成该算法的时间为t秒。现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模多大的问题? ②若上述算法的计算时间改进为T(n)=n2,其余条件不变,则在新机器上用t秒时间能解输入规模为多大的问题? ③若上述算法的计算时间进一步改为T(n)=8,其余条件不变,那么在新机器上用t秒时间能解输入规模多大的问题? * 算法设计与分析 * 课后练习 1-6 对于下列各组函数f(n)和g(n),确定f(n)=O(g(n))或f(n)=Ω(g(n))或f(n)=θ(g(n)) ,并简述理由。 * 算法设计与分析 * End 1.性能的好坏直接决定了可行或者不可行,例如一些实时需求 算法总是位于解决问题的最前线 2.性能位于最底层,扮演的角色好比经济中的钞票,有了这些,才能有水、食物等等商品,需要将性能作为支付其他东西的“货币”。作为衡量的一般性标准 * 古老的经典问题 * 当输入序列已排好序时出现最佳(好)情况。 如果输入数组正好呈完全反序(数值从大到小排列),则出现最坏情况 * * 算法是描述程序行为的语言 * 平均情况:期望概率分布下时间消耗 最好情况:一般不予考虑,假象 * 以下部分主要是数学讨论,与算法无关 * 忽略常量,关注运行时间的增长,而不是实际的运行时间 * 来自于单词“order”,一般译为“阶”,也可以译为“数量级” * 1 常数 ;logN 对数(一种增长很慢的函数) ; N 线性 ; N2 平方 ; 2N 指数 * 算法设计与分析 算法设计与分析 * 算法设计与分析 * 第1章 算法概述 理解研究算法的目的 理解算法的概念和算法的基本要素 掌握算法在最坏情况、最好情况和平均情况下的计算复杂性概念 掌握算法复杂性的渐近性态的数学表述 算法分析的研究内容 研究计算机程序性能和资源利用 在程序设计方面,什么比性能更重要? 正确性 功能性 可维护性 稳定性,健壮性 可重用性,模块化 安全性 用户友好 * 算法设计与分析 * * 算法设计与分析 * 为什么要研究算法? 通过算法程序员可以定量的分析程序的执行效率。Scalability 算法可以帮助我们区分什么是“可行的”feasible,什么是“不可能的”impossible。 描述程序行为的语言 程序的执行速度是追求的目标! * 算法设计与分析 * 1.1 算法与程序 算法的定义:解决问题的一种方法或一个过程。 算法的基本要素: 输入:有零个或多个外部量作为算法的输入。 输出:算法产生至少一个量作为输出。 确定性:组成算法的每条指令清晰、无歧义。 有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。 * 算法设计与分析 * 举例:排序问题 排序:将无序数值序列排列成按值非递减序列。 问题定义: 输入:数值序列a1,a2,……,an 输出:数值序列a’1,a’2,……,a’n且a’1≤a’2 ≤ …… ≤ a’n。 { 31, 41, 59, 26, 41, 58 } { 26, 31, 41, 41, 58, 59 } * 算法设计与分析 * 插入排序 templateclass Type void INSERTION-SORT(Type A[ ], int n) 1 { int i, j; Type key; 2 for(j=1; jn; j++) 3 { key=A[j]; 4 //将元素A[j]插入已排序列A[0 ~ j - 1]。 5 i=j-1; 6 while(i=0A[i]key) 7 { A[i+1]=A[i]; 8 i=i-1; } 9 A[i+1]=key; } 10 } 0 j n-1 A Key 已排好序的 5 2 4 6 1 3 0 1 2 3 4 5 * 算法设计与分析 * 插入排序 2 5 2 4 6 1 3 0 1 2 3 4 5 key (a) 4 2 5 4 6 1 3 0 1 2 3 4 5 key (b) 6 2 4 5 6 1 3 0 1 2 3 4 5 key (c) 1 2 4 5 6 1 3 0 1 2 3 4 5 key (d) 3 1 2 4 5

文档评论(0)

边缘人物 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档