知道算法的时间复杂度和空间复杂度能让你针对具体度的业务选择正确的算法。
一、时间复杂度
1、概述
一般情况下,算法的基本操作重复执行的次数是模块n的某一函数f(n),因此,算法的时间复杂度记做 T(n) = O(f(n))。 随着模块n的增大,算法执行的时间增长率f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
int num = 0; // 第一次执行
int n = 7;
for (int i = 0; i < n; i ++) { // 执行了n次
num += 1;
}
这个算法执行了 1 + n 次,如果n无限大,我们可以把前边的1忽略,也就是说这个算法执行了n次。时间复杂度常用大O符号表示,这个算法的时间复杂度就是O(n),我们称之为大O记法。
而判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高项)的阶数。如:算法A需要运行2n^2+3n+1次,其中的3n+1已经没法和2n^2的结果相比较,最终几乎可以忽略不计。