时间复杂度:用于评估执行程序所消耗的时间,可以估算出程序对处理器的使用程度。
时间频度:算法中的语句执行次数称为时间频度,记作 T(n)
如果存在某个函数 f(n),使得当 n 趋于无穷大时,T(n)/f(n) 的极限值是不为零的常数,那么 f(n) 是 T(n) 的同数量级函数,记作 T(n)=O(f(n)),称 O(f(n)) 为算法的渐进时间复杂度,简称为时间复杂度。
常见的时间复杂度有:O(1) 常数型;O(log n) 对数型,O(n) 线性型,O(nlog n) 线性对数型,O(n2) 平方型,O(n3) 立方型,O(nk)k 次方型,O(2n) 指数型。
如何推导时间复杂度
求解算法复杂度一般分以下几个步骤:
找出算法中的基本语句:算法中执行次数最多的语句就是基本语句,通常是最内层循环的循环体。
计算基本语句的执行次数的数量级:只需计算基本语句执行次数的数量级,即只要保证函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,使注意力集中在最重要的一点上:增长率。
用大Ο表示算法的时间性能:将基本语句执行次数的数量级放入大Ο记号中。
其中用大 O 表示法通常有三种规则:
用常数 1 取代运行时间中的所有加法常数;
只保留时间函数中的最高阶项;
如果最高阶项存在,则省去最高阶项前面的系数;


空间复杂度:用于评估执行程序所占用的内存空间,可以估算出程序对计算机内存的使用程度。
存储空间通常包括:指令空间(即代码空间)、数据空间(常量、简单变量)等所占的固定部分和动态分配、递归栈所需的可变空间。
网友评论