算法的时间复杂度分类
1.算法的时间复杂度主要有以下几种
1.1 0(1)
指的是常数时间内的算法。例如:
int i = 8; int j = 6; int sum = i + j;
执行一次或者常数时间次数的代码,时间复杂度都是0(1)
1.2 0(log n) 0(n log n)
示例代码:
i=1; while (i <= n) { i = i * 2; }
上述代码的时间复杂度为 o(log n) 这类的时间复杂度不太容易获取。 但是可以通过 将操作次数作为参数来 ,计算出 操作次数的方式来的计算
1.3 O(m+n)、O(m*n)
一般为有两个不定参数,且两个不定参数都不能确定其大小
int cal(int m, int n) { int sum_1 = 0; int i = 1; for (; i < m; ++i) { sum_1 = sum_1 + i; } int sum_2 = 0; int j = 1; for (; j < n; ++j) { sum_2 = sum_2 + j; } return sum_1 + sum_2; }
1.4 O(n2)
其实 O(n2) 可以理解为 O(m*n) 都是不定参数
1.5 O(2^n)
i=1; while (i <= 2^n) { i ++; }
1.6 O(n!)
i=1; while (i <= n!) { i ++; }
下一篇:
设计模式——适配器模式