一、时间频度 基本介绍 一个算法中语句执行的次数称为语句频度,或者时间频度。记作T(n)。例如: //计算一至一百所有数字之和 //方法一: int res = 0; for(int i = 1;i <= 100;i++){ res += i; } //T(n) = n+1,这里的n就是100次,最后多的一次是判断。 //方法二: res = 0; res = (1+100)*100/2; //T(n) = 1,无论n是多少,时间频度都是1。 二、时间复杂度 基本介绍: 知道了时间频度T(n)之后,如果有一个函数f(n),这个函数f(n)满足 对T(n)/f(n)取极限,并且极限值为一个不等于零的常数,那么这个函数f(n)就是称为T(n)的同数量级函数,记作 T(n)=O(f(n)) ,称 O(f(n))为算法的渐进时间复杂度,简称时间复杂度。计算时间复杂度的方法: 用常数1代替时间频度中所有加法常数。修改后的时间频度中,只保留最高阶。去除最高阶项的系数。 三、常见的时间复杂度 常数阶O(1)对数阶O(log以2为底取n的对数)线性阶O(n)线性对数阶O(n倍的log以2为底取n的对数)平方阶O(n^2)立方阶O(n^3)k次方阶O(n^k)指数阶O(2^n) 常见算法时间复杂度从小到大依次为: O(1) < O(log以2为底取n的对数) < O(n) < O(n倍的log以2为底取n的对数) < O(n^2) < O(n^3) < O(n^k) < O(2^n)