重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第2章 算法分析

第2章算法分析 算法分析的概念 @算法效率的度量 @检验一个算法分析 @Bg-Oh分析法的限制
第2章 算法分析 算法分析的概念 算法效率的度量 检验一个算法分析 Big-Oh分析法的限制

评价算法好坏的标准 ◆执行算法所耗费的时间,即效率问题。 ◆执行算法所耗费的存储空间,主要考虑辅助的存储空 间 ◆算法应易于理解具有可读性,易于编码,易于调试等。 ◆健壮性,即当输入一些非法数据时,算法也应做出适 当的反映或进行处理
评价算法好坏的标准 执行算法所耗费的时间,即效率问题。 执行算法所耗费的存储空间,主要考虑辅助的存储空 间。 算法应易于理解,具有可读性,易于编码,易于调试等。 健壮性,即当输入一些非法数据时,算法也应做出适 当的反映或进行处理

算法分析的概念 ◆算法所花费的运行时间取决于它所处理的数 据输入量。 ◆算法的运行时间是数据输入量的一个函数。 ◆而确切的函数值依赖于许多因素。 ◆对于一个给定计算机上的给定程序,可以在 图中描绘出运行时间的函数
算法分析的概念 算法所花费的运行时间取决于它所处理的数 据输入量。 算法的运行时间是数据输入量的一个函数。 而确切的函数值依赖于许多因素。 对于一个给定计算机上的给定程序,可以在 图中描绘出运行时间的函数

算法分析中的时间函数图解 ◆图中给出了四个程序的运行时间图,这些曲线代表了在算法 分析中遇到的四个函数:线性函数、O( NlogN)、二次方 函数、立方函数,输入规模N从1至100,运行时间为0至10 亳秒。 线性 线性 0.8 O NIogND O(NIOgN 平方 0.6 平方 互万 4 0.4 0.2 1020304o50607o8o90100 12345678910 输入规模(M) 输入规模(N)(单位为千) 图2-1小规模输入时的运行时间 图2-2中规模输入时的运行时间
图中给出了四个程序的运行时间图,这些曲线代表了在算法 分析中遇到的四个函数:线性函数、O(NlogN)、二次方 函数、立方函数,输入规模N从1至100,运行时间为0至10 毫秒。 算法分析中的时间函数图解 图2-1 小规模输入时的运行时间 图2-2 中规模输入时的运行时间

◆这些曲线最显著的特征就是当数据输入量较大时,平方 算法和立方算法无法与其他算法竞争。 ◆下表所示的是以增长率的增长次序来排列这些算法运行 时间的函数。 函数 名称 函数 名称 常数 NIOgN NlOgN 0g 对数 N 平方 0g 平方对数 N 立方 N 线性 n 指数
这些曲线最显著的特征就是当数据输入量较大时,平方 算法和立方算法无法与其他算法竞争。 下表所示的是以增长率的增长次序来排列这些算法运行 时间的函数。 函数 名称 函数 名称 c 常数 NlogN NlogN logN 对数 N² 平方 log ²N 平方对数 N³ 立方 N 线性 2ⁿ 指数

算法效率的度量 算法效率——用依据该算法编制的程序在计算机上执行 所消耗的时间来度量。 通常有两种衡量算法效率的方法: 1、事后统计——利用计算机内记时功能,不同算法的程序 可以用一组或多组相同的统计数据区分。 缺点:①必须先运行依据算法编制的程序。 ②所得时间统计量依赖于硬件、软件等环境因素,掩盖 算法本身的优劣
算法效率的度量 算法效率——用依据该算法编制的程序在计算机上执行 所消耗的时间来度量。 通常有两种衡量算法效率的方法: 1、事后统计——利用计算机内记时功能,不同算法的程序 可以用一组或多组相同的统计数据区分。 缺点:必须先运行依据算法编制的程序。 所得时间统计量依赖于硬件、软件等环境因素,掩盖 算法本身的优劣

算法效率的度量 2、事前分析估计——个高级语言程序在计算机上运行所 消耗的时间取决于: ①依据的算法选用何种策略 ②问题的规模 ③程序语言 ④编译程序产生机器代码质量 ⑤机器执行指令速度
算法效率的度量 2、事前分析估计——一个高级语言程序在计算机上运行所 消耗的时间取决于: 依据的算法选用何种策略 问题的规模 程序语言 编译程序产生机器代码质量 机器执行指令速度

算法效率的度量 同一个算法用不同的语言、不同的编译程序、在 不同的计算机上运行,效率均不同,—所以使用 绝对时间单位衡量算法效率不合适 一个特定算法的“运行工作量”的大小,只依赖 于问题的规模(通常用整数量η表示),或者说, 它是问题规模的函数
算法效率的度量 同一个算法用不同的语言、不同的编译程序、在 不同的计算机上运行,效率均不同,——所以使用 绝对时间单位衡量算法效率不合适。 一个特定算法的“运行工作量”的大小,只依赖 于问题的规模(通常用整数量n表示),或者说, 它是问题规模的函数

计算累加和程序 程序步数计算工作表格 次执行所执行程序 程序语句 需程序步数频度步数 0 float s =0.0: for( int i=0; i<n; i++)1 n+1n+1 s+= a[; return s, 0 10 总程序步数2n+3
计算累加和程序 程序步数计算工作表格 程 序 语 句 一次执行所 需程序步数 执行 频度 程序 步数 { 0 1 0 float s = 0.0; 1 1 1 for ( int i=0; i<n; i++ ) 1 n+1 n+1 s += a[i]; 1 n n return s; 1 1 1 } 0 1 0 总程序步数 2n+3

算法效率的度量 一般情况下,算法中基本操作重复执行的次数是问题 规模n的某个函数,算法的时间量度记作 T(n=o(f(n) 称作算法的渐近时间复杂度,简称时间复杂度。 表示随着问题规模η的增长,算法执行时间的增长率 和f(n)的增长率相同
算法效率的度量 一般情况下,算法中基本操作重复执行的次数是问题 规模n的某个函数,算法的时间量度记作 T(n)=O(f(n)) 称作算法的渐近时间复杂度,简称时间复杂度。 表示随着问题规模 n 的增长,算法执行时间的增长率 和 f(n) 的增长率相同
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第1章 绪论(闫会峰).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第11章 结构体与共用体.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)渡河问题.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)模式匹配的BF算法.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)树的练习.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)习题讲解(闫会峰).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)Huffman树及其应用.ppt
- 重庆移通学院:《数据结构》课程教学资源(教程讲义,共二十八课,闫会峰).doc
- 《VC++深入详解教学》第十九讲 动态链接库(孙鑫).ppt
- 《VC++深入详解教学》第十五讲 多线程与聊天室程序的创建(孙鑫).ppt
- 《VC++深入详解教学》第十三讲 文档(孙鑫).ppt
- 《VC++深入详解教学》第十四讲 网络编程(孙鑫).ppt
- 《VC++深入详解教学》对话框(续)(孙鑫).ppt
- 《VC++深入详解教学》第二十讲 HOOK和数据库访问(孙鑫).ppt
- 《VC++深入详解教学》第十二讲 文件(孙鑫).ppt
- 《VC++深入详解教学》第十七讲 进程间通信(孙鑫).ppt
- 《VC++深入详解教学》对话框(孙鑫).ppt
- 《VC++深入详解教学》Windows程序运行原理(孙鑫).ppt
- 《VC++深入详解教学》第十讲 创建兼容DC(孙鑫).ppt
- 《VC++深入详解教学》菜单(孙鑫).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第3章 线性表.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第4章 栈和队列.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第5章 串.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第6章 数组与广义表.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第7章 树.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第8章 图.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)线性表操作综合运行例子.ppt
- 《Linux课件》第三章 Linux中的进程管理.ppt
- 《Linux课件》SHELL编程.ppt
- 《Linux课件》第三章 Linux的安装与配置.ppt
- 《Linux课件》第四章 Linux使用基础.ppt
- 《Linux课件》第五章 Linux系统管理.ppt
- 《Linux课件》第六章 Linux网络应用.ppt
- 《Linux课件》第二章 Linux的常用命令.ppt
- 《Linux课件》第五章 Linux网络基础.ppt
- 《Linux课件》第六章 Internet应用服务器的配置.ppt
- 《Linux课件》第七讲 linux下C语言编程——基础知识.ppt
- 《Linux课件》第三讲 linux系统中资源的访问与操作.ppt
- 《Linux课件》第四讲 shell程序设计与用户管理.ppt
- 《Linux课件》第四章 用户和组管理.ppt