算法和算法分析概念
2017-04-21 15:15
337 查看
1 算法及其性能标准
算法是求解一类问题的任意一种特殊的方法,较严格的来说,是对特定问题的求解步骤的一种描述,它是指令的有限序列。算法的五个特征:输入、输出、确定性、能行性、有穷性
衡量一个算法的性能,主要有以下标准:正确性,简明性,健壮性,效率。
2 算法的时间复杂度
判断算法的性能要考虑的一个基本特征就是问题实例的规模,规模一般是输入量(有时也涉及输出量)。算法的事前分析:在排除程序运行环境的因素后来讨论算法的时间效率。
算法的事后测试:测试一个程序在所选择的的输入数据下运行时实际所需要的时间。
程序步:语法或语义上有意义的程序段。
程序步的计算实例:
求一个数组元素累加之和的递归程序,
float Sum(float list[],int n)
{
count++; //针对if条件
if(n)
{
count++; //针对下面的一条语句
return Sum(list,n-1) + list[n-1];
}
count++;
return 0; //针对return语句
}
当 n = 0 时,所需步数为 2 ;
当 n > 0 时,执行语句和第一句 return;则可表示为
T(n) = 2 + T(n-1) = 2 + 2 + T(n-2)
= 2 + 2 + 2 + T(n-3)
= 2n + T(0)
= 2n + 2
程序步不能确切地反映程序运行的实际时间。
3 渐进时间复杂度
定义:设f(n)和g(n)是定义在正整数上的正函数,如果存在两个正常数c和n0,使得当n>=no时,有f(n)<=cg(n),则记作f(n) = O(g(n)),被称为大O记号(big-Oh notation)大O记号用以表达一个算法运行时间的上界。当我们说一个算法具有O(g(n))的运行时间时,是指该算法在计算机上的实际运行时间不会超过g(n)的一个常数倍。
例:设一个程序的实际执行时间T(n) = 3.6 n^3 + 2.5 n^2 + 2.8 ,则T(n) = O(n^3),O(1)表示常数计算时间,计算法只需执行有限程序步。
注:1bn = log2 n
渐近时间复杂度按从小到大的顺序排列为O(1)<O(1b)<O(n)<O(n1bn)<O(n^2)<O(n^3)
相关文章推荐
- 数据结构基础 算法复杂度分析(一) 概念篇
- 数据结构与算法(Python)-一般概念和算法效率分析
- 数据结构基本概念和算法分析
- c/c++ 数据结构算法与概念 (抽象数据类型&算法及算法分析)
- GZIP压缩原理分析(12)——第五章 Deflate算法详解(五03) 预备知识(02) 压缩“窗口”概念
- 数据结构基本概念及算法和算法分析 -- 引自《新编数据结构习题与解析》(李春葆等著)
- 冒泡排序的算法分析与改进
- 算法和数据结构基本概念
- UML的用例(Use Case)概念分析及实例
- XoftSpy 4.13的注册算法分析 zz
- zz 超级拖拉机 4.02 破解算法分析
- Windows系统切换工具 算法分析+注册机
- diablo2002’s crackme1算法分析
- 循环冗余校验 CRC的算法分析和程序实现
- Role分析模式(一) 角色对象基本概念
- UML中的用例(Use Case)概念分析及实例
- SharpDevelop源码分析 (一、序+基本概念)
- 冒泡排序的算法分析与改进(转载)
- 循环冗余校验CRC的算法分析和程序实现
- 冒泡排序的算法分析与改进