算法入门03:算法复杂度

📘 算法复杂度

1. 什么是算法复杂度?

当我们写一个算法(比如排序、查找),它运行时需要 两种资源

  1. 时间 → 算法要花多久才能跑完。

  2. 空间 → 算法要占多少内存。

所以算法复杂度分成:

  • 时间复杂度(Time Complexity)

  • 空间复杂度(Space Complexity)


2. 时间复杂度

👉 指算法运行时,需要多少“步骤”或“计算工作量”。

比如:

  • 你要在抽屉里找一支笔,如果抽屉里有 n 个物品:

    • 一个一个找 → 可能要找 n 次(O(n))。

    • 如果抽屉按字母排好顺序,用“二分查找” → 最多只要 log₂(n) 次(O(log n))。

所以时间复杂度常用 大O符号 来表示:

  • O(1) → 一下子就能找到(常数时间)。

  • O(n) → 随着数据变多,步骤数线性增加。

  • O(n²) → 嵌套循环,两层遍历。


3. 空间复杂度

👉 指算法运行时,要用多少额外的内存。

比如:

  • 直接在原地交换排序 → 额外内存很少,O(1)。

  • 如果要新建一个数组来存 → 需要额外 O(n) 内存。


4. 直观比喻(小朋友能懂版本)

  • 时间复杂度:就像你做作业需要多少分钟。

  • 空间复杂度:就像你做作业需要用多少张纸。

一个好算法,就是 既快(时间少)又省纸(空间少)


总结

  • 算法复杂度 = 算法需要的资源多少。

  • 时间复杂度 = 算法要花多少时间(步骤数)。

  • 空间复杂度 = 算法要占多少内存。

  • 都用 大O表示法 来描述增长趋势。