标签:
评价一个算法的优劣应该从三个方面判断
1.时间复杂度 : 执行算法所耗费的时间,即时间复杂度
2.空间复杂度 : 执行算法所耗费的存储空间,主要是辅助空间
3.可读性和可操作性 : 算法应当易于理解,易于编程,易于调试等
时间复杂度
一般情况下,将算法所要求求解问题的输入量称为问题的规模,并用一个正整数n来表示
T(n)就是该算法的时间耗费,他是该算法所求问题规模n的函数
算法中基本操作重复执行的次数时问题规模n的某个函数f(n)
算法的时间量度记为: T(n) = O(F(n))
时间复杂度的计算
假如将算法中基本操作的重复执行次数看成是问题规模n的某个函数f(n),算法的渐进时间复杂度记作: T(n) = O(F(n))。它表示随问题规模n的增大。算法执行的增长率和f(n)的增长率相同,其中f(n)一般为算法中频率最大的语句的频率。
在分析算法时,往往对算法的时间复杂度和渐进时间复杂度不予区分,而经常是将渐进时间复杂度T(n) = O(f(n)) 简称为时间复杂度。
1.在难精确计算基本操作执行次数(或语句频度)的情况下,只需要求出它关于n的增长率或阶即可。
2.如果一个算法的执行时间是一个与问题规模n无关的常熟,即使是一个较大的常数,该算法的时间复杂度都为常熟阶,记作T(n) = O(1)
常见的时间复杂度按数量级递增排列
常数阶 O(1)
对数阶 O(log2n)
线性阶 O(n)
线性对数阶 O(nlog2n)
平方阶 O(n^2)
立方阶 O(n^3)
..k次方阶 O(n^k)
指数阶 O(2^n)
阶乘阶 O(n!)
空间复杂度
类似于时间复杂度,一个算法的空间复杂度 S(n) 定义为该算法所耗费的存储空间
空间复杂度的计算
1.存储空间本身所占用的存储空间
2.算法的输入输出数据所占用的存储空间
3.算法在运行过程中临时占用的存储空间
标签:
原文地址:http://www.cnblogs.com/sz-zzm/p/5471900.html