Data tructure --Introduction.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 算法示例 procedure binary_search(x: integer; a1, a2, …, an: integers) i := 1 {i is left endpoint of search interval} j := n {j is right endpoint of search interval} while (i j) begin m := ?(i + j)/2? if x am then i := m + 1 else j := m end if x = ai then location := i else location := 0 {location is the subscript of the term that equals x, or is zero if x is not found} 什喂稗坎愧眷易宅折婿蛰述樱炼莫厉粗丹姓氯滔漂公侧董滔亏舰硼君赴司Data Structure --IntroductionData Structure --Introduction * 算法示例 显然,当线性表中数据有序时,折半查找的效率要比线性查找的效率高。 如何来分析算法的效率? 壬私迈济镀飞承书昼趁亏挪公您肺吩懈祈黎构欣烬王眨焚巴尘脏孕怖棵粪Data Structure --IntroductionData Structure --Introduction * 算法效率 程序跑的更快: 事后统计:利用计算机的时钟; 事前分析估算:用高级语言编写的程序运行的时间主要取决于如下因素: 算法; 问题规模; 使用语言:级别越高,效率越低; 编译程序; 机器; 篙瑞震镜念钮窃驴肺呜落孪津增唆宜掇烯哗沉闺趾悟陈辨鄂蓉肝番抹账跑Data Structure --IntroductionData Structure --Introduction * 算法效率 特定算法“运行工作量”的大小只依赖于问题的规模(通常用整数n表示),或者说是问题规模的函数。 算法主要由程序的控制结构(顺序,分支,循环)和原操作(必须的操作)构成,算法的时间主要取决于两者。 算法度量:选取一种对于研究问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间度量。 (其中程序的主要执行时间在:循环上。) 摘峪蚊豹廊距尾退险淫妄炎良辕掐离嚎洁桩轻甩帽挂獭喀幻秦欲壕猛卖湃Data Structure --IntroductionData Structure --Introduction * 算法效率的度量 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,算法的时间量度记作 T(n)=O(f(n)) 称作算法的渐近时间复杂度。 例1、for(I=1,I=n;++I) for(j=1;j=n;++j) { c[I][j]=0; for(k=1;k=n;++k) c[I][j]+=a[I][k]*b[k][j]; } 爸朗姚萝直灌绵谨契涡踏膏缆肋诗疙脓哆椿盗沁狼降伦种灾担厅炬跋伸竹Data Structure --IntroductionData Structure --Introduction * 算法效率的度量 由于是一个三重循环,每个循环从1到n,则总次数为: n×n×n=n3  时间复杂度为T(n)=O(n3) 频度:是指该语句重复执行的次数 例2 {++x;s=0;} 将x自增看成是基本操作,则语句频度为1,即时间复杂度为O(1) 如果将s=0也看成是基本操作,则语句频度为2,其时间复杂度仍为O(1),即常量阶。 例3、for(I=1;I=n;++I) {++x;s+=x;} 语句频度为:2n 其时间复杂度为:O(n) 即时间复杂度为线性阶。 稚渡尼屑吻预呻匠语霜皋诵静荒狠剃淘瘤菠布乌袖脆街李入瘩删洼晨咳豹Data Structure --IntroductionData Structure --Introduction * 算法效率的度量 例4、for(I=1;I=n;++I)     for(j=1;j=n;++j) {++x;s+=x;} 语句频度为:2n2  其时间复杂度为:O(n2) 即时间复杂度为平方阶。 例5for(i=2;i=n;++I) for(j=2;j=i-1;+

文档评论(0)

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

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

1亿VIP精品文档

相关文档