1.1 统计时间增长趋势
时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。
- // 算法 A 的时间复杂度:常数阶
- void algorithm_A(int n) {
- System.out.println(0);
- }
- // 算法 B 的时间复杂度:线性阶
- void algorithm_B(int n) {
- for (int i = 0; i < n; i++) {
- System.out.println(0);
- }
- }
- // 算法 C 的时间复杂度:常数阶
- void algorithm_C(int n) {
- for (int i = 0; i < 1000000; i++) {
- System.out.println(0);
- }
- }
复制代码
- 算法 A:
时间复杂度为 O(1),这是由于算法A不管输入的 n 是什么值,它都只实行了一次操作——打印数字0。这意味着算法的运行时间是固定的,与输入的巨细无关。
- 算法 B:
时间复杂度为 O(n),这是由于算法B中的循环将根据输入的 n 实行 n 次打印操作。当 n 增长时,实行的操作次数也成比例地增长。
- 算法 C:
时间复杂度同样为 O(1),只管这个算法使用了一个循环,但循环的次数是固定的1000000次,与输入参数 n 的值无关。这意味着无论 n 是什么值,算法C都将实行类似数量的操作,因此运行时间是固定的。
1.2 时间复杂度分析有哪些特点
- 时间复杂度可以或许有效评估算法效率。
- 时间复杂度的推算方法更简便。
- 时间复杂度也存在一定的范围性。
时间复杂度分析本质上是计算“操作数量 |