不到断气不罢休 发表于 2024-7-22 02:48:53

算法学习条记(Hello算法)—— 时间复杂度

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都将实行类似数量的操作,因此运行时间是固定的。
https://i-blog.csdnimg.cn/direct/82504060be4d430ba2bc1f60f3f0ae17.png
1.2 时间复杂度分析有哪些特点



[*]时间复杂度可以或许有效评估算法效率。
[*]时间复杂度的推算方法更简便。
[*]时间复杂度也存在一定的范围性。
时间复杂度分析本质上是计算“操作数量
页: [1]
查看完整版本: 算法学习条记(Hello算法)—— 时间复杂度