算法复杂度是衡量算法效率的核心指标,通常分为时间复杂度和空间复杂度。以下为关键知识点梳理:
1. 时间复杂度 🕒
- 表示算法执行时间与输入规模的关系
- 常见类型:
- O(1):常数时间(如数组随机访问)
- O(log n):对数时间(如二分查找)
- O(n):线性时间(如遍历数组)
- O(n²):平方时间(如双重循环嵌套)
- O(2ⁿ):指数时间(如递归求解斐波那契数列)
- 📌 示例:
2. 空间复杂度 📦
- 表示算法所需内存空间与输入规模的关系
- 关键点:
- 原地算法(如冒泡排序) vs 额外空间算法(如快速排序)
- 避免内存泄漏,合理管理递归栈深度
- 📌 图解:
3. 大O表示法 📊
- 用于描述算法复杂度的渐进行为(Asymptotic Behavior)
- 忽略常数因子和低阶项,关注增长趋势
- 📌 深入解析:
4. 复杂度对比表 📈
算法类型 | 时间复杂度 | 空间复杂度 | 适用场景 |
---|---|---|---|
堆排序 | O(n log n) | O(1) | 大数据排序 |
哈希表查找 | O(1) | O(n) | 需快速检索 |
动态规划 | O(n²) | O(n) | 优化重复子问题 |
5. 扩展阅读 📚
📌 注意:实际开发中需结合具体场景选择最优算法,复杂度分析是性能优化的基石!