数据结构 第3讲 算法性能分析与度量.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第3讲 算法性能分析与度量

第1章 数据结构概论 信息技术学院 授课教师: 授课对象:2013级软工金融、网媒 数据结构 * 知识回顾 数据结构的研究内容是什么? 数据的逻辑结构、存储结构以及算法 抽象数据类型的三元组表示格式是什么,其中的三元指什么? ADT抽象数据类型名{ 数据对象:数据对象的定义 数据关系:数据关系的定义 基本操作:基本操作的定义 }ADT抽象数据类型名 数据对象、关系集、基本操作集 什么是算法?算法的描述方法有哪些? * 知识回顾 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。? 算法描述: 令k=2 当k不大于n时 2.1 如果这个质数恰等于n,输出k,结束? 2.2 如果n≠k,但n能被k整除,则输出k,并修改n的值(n=n/k),重复执行2.1。 2.3 如果n不能被k整除,则用k+1作为k的值,重复执行2.1 (演示程序) 如何衡量一个算法的性能 * 1.5 算法性能分析与度量 算法的性能标准 算法的后期测试 算法的事前估计 * 1.5.1 算法的性能标准 正确性 (Correctness ) 算法应满足具体问题的需求。 可使用性(usability) 算法设计必须符合抽象数据类型和模块化要求,每个算法只完成一个功能 可读性(Readability) 算法应该容易阅读。以有利于阅读者对程序的理解。 效率 效率指的是算法执行的时间和空间利用率。通常这两者与问题的规模有关。 健壮性 (Robustness) 算法应具有容错处理的功能。当输入非法数据时,算法应对其作出反应,而不应产生莫名其妙的输出结果。 简单性(simplicity)指算法所采用的数据结构和方法的简单程度。算法的简单性便于用户编写、分析和调试 1.5 算法性能分析与度量 * 1.5.2 算法的后期测试 事后测试要求在算法执行后通过算法执行的时间和实际占用空间的统计资料来分析。 事后分析要求在算法中的某些部位插装时间函数time ( ),测定算法完成某一功能所花费时间。 1.5 算法性能分析与度量 * 1.5.2 算法的后期测试 例如顺序搜索 (Sequenial Search)算法 1.5 算法性能分析与度量 int seqsearch(int a[ ], int n, int x ) { //在a[0],…,a[n-1]中搜索与给定值 //x相等的元素,函数返回其位置. int i = 0; while ( i n a[i] != x ) i++; if ( i == n ) return -1; return i; } * 1.5.2 算法的后期测试 插装 time( ) 的计时程序 void TimeSearch(){ int a[1001],n; double start, stop; for(int j=0;j=1000;j++) a[j]=j+1; cinn; time(start); int k = seqsearch (a, n, x); time(stop); double runTime = stop - start; cout n runTime endl; } 1.5 算法性能分析与度量 事实上,算法运行时间要受输入规模、利用编译程序生成的目标代码的质量、计算机程序指令系统的品质和速度等制约。 * 1.5.3算法的事前估计 主要包括时间复杂性和空间复杂性的分析: 问题的规模:如:矩阵的阶数、图的结点个数、被分类序列的正整数个数等。 空间复杂性:算法所需空间和问题规模的函数。记为 S(n)。当 n?? 时的时间复杂性,称为渐进空间复杂性。 时间复杂性:算法所需时间和问题规模的函数,记为 T(n)。当 n?? 时的时间复杂性,称为渐进时间复杂性。 1.5 算法性能分析与度量 * 空间复杂度度量 存储空间的固定部分 程序指令代码的空间,常数、简单变量、定长成分(如数组元素、结构成分、对象的数据成员等)变量所占空间 可变部分 尺寸与实例特性有关的成分变量所占空间、引用变量所占空间、递归栈所用空间、通过new和delete命令动态使用空间 1.5 算法性能分析与度量 * 时间复杂度度量 编译时间 运行时间 程序步 语法上或语义上有意义的一段指令序列;而且这段指令序列的执行时间与问题规模无关; 例如:声明语句:程序步数为0; 表达式:程序步数为1 1.5 算法性能分析与度量 1.5.4 算法的渐进分析 1.渐进的时间复杂度 例 求两个n阶方阵的乘积C = A?B void MatrixMultiply (int A[n][n], int B[n][n], int C[n][n]

文档评论(0)

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

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

1亿VIP精品文档

相关文档