算法入门03:算法复杂度
📘 算法复杂度
1. 什么是算法复杂度?
当我们写一个算法(比如排序、查找),它运行时需要 两种资源:
时间 → 算法要花多久才能跑完。
空间 → 算法要占多少内存。
所以算法复杂度分成:
时间复杂度(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表示法 来描述增长趋势。