第1章 算法分析基本概念new.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章 算法分析基本概念new.ppt

第1章 算法分析基本概念 1.1 引言 1.2 历史背景 1.3 二分搜索 1.4 合并二个已排序的表 1.5 选择排序法 1.6 插入排序法 1.7 自底向上合并排序法 1.8 时间复杂性 1.9 空间复杂性 1.10 最优算法 1.1 引言 Donald E.Knuth 计算机科学就是 算法研究 例,编译程序和操作系统是具有特定目标的算法的直接实现。 算法分析(Algorithm Analysis) 算法分析研究的目标为:算法一旦转换成某种语言的程序,该程序在计算机上运行,需要多少时间和存储空间才能完成解题方案。 确定一个程序的运行效率,既可使用数学分析方法,也可使用实验测试方法,在理论和实践二个方面对算法作出评估。 1.3 二分搜索 ㈠顺序搜索(线性搜索) 问题:设A[1..n]为一个n个元素(整数)的数组,判定给定元素x是否在A中。 算法:扫描A的所有项目,将每个项目与x比较,如果在第j次比较后(1≤j≤n)搜索成功,即x=A[j],则返回j值;否则返回0,表示没有找到。这种方法称为顺序搜索。 ㈡顺序搜索算法分析 最少比较次数为1,最多比较次数为n 。 ㈢二分搜索 令A[low..high]为元素按升序排列的非空数组,A[mid] 为中间元素。假定xA[mid],如果x在A中,则它必定是 A[mid+1],A[mid+2],…,A[high] 中的一个,接下来只需在A[mid+1..high]中搜索x。换句话说,A[low..mid]中的项目在后续比较中被掉弃了。类似地,如果xA[mid],只需在A[low..mid-1]中搜索x。由于重复进行二等分,导致了一个称为二分搜索的有效策略。 当?n/2j-1?=1,j为最大迭代次数(最大比较次数)。 ?n/2j-1?=1 等价于 1≤n/2j-12 等价于 2j-1≤n2j 等价于(取对数) j-1≤Log2nj 考虑 ?Log2n?≤Log2n?Log2n ?+1 因为j是整数,故有 j-1=?Log2n? 或 j=?Log2n?+1 二者均有 j=?Log2n?+1 107 5 2311 11 8 159 32 4 7 9 12 2210 27 3514 1.5 选择排序法 ㈡算法描述 设A[1..n]为需排序的n个元素的数组。 ⑴第1次迭代 生成个数为2(=21)的段序列,该序列共有?n/2?=?n/21?段,段内有序。若n为奇数,最后一段只有1个元素,单独构成一段进入下一轮合并。 ⑵第2次迭代 生成个数为4(=22)的段序列,共有?n/4?=?n/22?段,段内有序。若n不能为4整除,最后一段可能由1个、2个或3个元素构成。若为1个或2个元素(局部有序),单独构成一段进入下一轮合并;如果为3个元素,将2个元素(局部有序)和另外1个元素合并成一个3个元素的有序段,然后进入下一轮合并。 ⑶第j次迭代(可假设j=3来理解) 生成元素个数为2j个的段序列,该序列共有?n/2j?段,段内有序。若n不能为2j整除,则最后一段元素个数在1至2j-1之间,设最后一段元素个数为r(例j=3,1≤r≤7)。 若1≤r≤2j-1(例j=3,1≤r≤4),单独构成一段进入下一轮合并(局部有序); 若2j-1r2j(例j=3,5≤r≤7),将2j-1个元素(局部有序)和另外r-2j-1个元素(局部有序)合并成个数为r的有序段,然后进入下一轮合并。 1.8 时间复杂性 在计算复杂性领域中,主要是研究一个算法所需要的时间和空间。即当给出合法的输入时,为了得到输出,该算法执行时所需要的时间和空间,其中时间尤为重要。 执行算法BottomUpSort的最大比较次数 nlog2n-n+1 执行算法SelectionSort的最大比较次数 n(n-1)/2 假设一次比较所需的时间为10-6秒,当数据个数n分别为 27 =128 和220=1048576时,二个算法执行所耗费的时间上限如下表所示: ㈠概述 称“一个算法A对于输入x要用y秒来运行”是没有意义的,也是没有必要的。因为影响一个算法的实际运行时间与诸多因素有关(例如机器性能、语言选择、编译程序优劣、程序员素质等),甚至无需计算出算法运行时间的近似数。理由如下: 算法分析通常是将解决同一问题的各种算法之间进行相互比较,执行时间是相对的,而不是绝对的; 算法应独立于机器,无论科技如何进步,对算法运行时间的评估始终成立; 算法分析不拘泥小规模数据的输入,主要关心在大的输入实例时,算法运行状况。 例某一算法运行时间为2n3 ,当n变得很大时,常数2将不起作用。观察函

文档评论(0)

zhoujiahao + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档