赞
踩
数据元素之间的关系有逻辑关系和物理关系,对应的运算有基于逻辑结构的运算描述 和基于存储结构的运算实现
通常把基于存储结构的运算实现的步骤或过程称为算法
1. 有穷性:在有穷步之后结束,算法能够停机
2. 确定性:无二义性
3. 可行性: 可通过基本运算有限次执行来实现,也就是算法中的每一个动作能够被机器的执行
4. 有输入:表示存在数据处理
5. 有输出:表示存在数据处理
返回值 算法对应的函数名(形参列表)
{ //临时变量的定义
//实现由输入参数列表到输出参数的操作
............
}
返回值: 通常为bool 类型,表示算法是否成功执行
形参列表:由输入型参数(算法输入)和输出参数(算法输出)构成
(1)CPU时间-----时间性能分析
(2)内存空间-----空间性能分析
算法分析目的:分析算法的时空效率以便改进算法性能
1. 事后分析统计方法:编写算法对应程序,统计其执行时间
不能用绝对执行时间进行比较原因: 编写程序的语言不同;执行程序的环境不同;其他原因。
2. 事前估算分析方法:撇开上述因素,认为算法的执行时间是问题规模n的函数
一个算法是由控制结构(顺序、分支和循环结构)和原操作(指固有数据类型的操作,
如+、-、*、/、++和–等)构成的。算法执行时间取决于两者的综合效果
一个算法的基本构成:控制语句1 原操作 控制语句2 原操作…控制语句n 原操作
求出算法所有原操作的执行次数(也称为频度),它是问题规模n的函数,用T(n)表示
算法执行时间大致 = 原操作所需的时间 x T(n) 。所以T(n)与算法的执行时间成正比
为此可用 T(n) 表示算法的执行时间
比较不同算法的 T(n)大小得出算法执行时间的好坏
算法的执行时间用时间复杂度来表示
算法中执行时间 T(n) 是问题规模 n 的某个函数 f(n),记作:T(n) =O( f(n) )
O表示随问题规模 n 的增大算法执行时间的增长率和 f(n) 的增长率相同
时间复杂度本质上讲,是一种 T(n) 最高数量级的比较。也就是只求出T(n)的最高阶,
忽略其低阶项和常系数
算法中的基本操作一般是最深层循环内的原操作
算法执行时间大致 = 基本操作所需的时间 X 其运算次数
在算法分析时,计算 T(n) 时仅仅考虑基本操作的运算次数
空间复杂度:用于量度一个算法在运行过程中临时占用的存储空间大小
一般也作为问题规模n 的函数,采用数量级形式描述,记作:S(n) =O(g(n))
原地工作或就地工作算法:若一个算法的空间复杂度为 O(1)
临时占用的存储空间:指的是函数体内分配的空间
算法中临时分配的变量个数与问题规模 n 无关
递归算法分析—也称为变长时空分析
非递归算法分析—也称为定长时空分析
常数阶:一个没有循环的算法的执行时间与问题规模 n 无关,记作 O(1)
线性阶:一个只有一重循环的算法的·执行时间与问题规模 n 的增长率呈线性增大关系,记作 O(n)
平方阶O(n2) 、立方阶O(n3) 、对数阶O(log2 n) 、指数阶O(2n)等
O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n) < O(n!)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。