高频算法题型:动态规划三步法是计算机科学的核心,它为问题解决提供了高效的计算方法。
本文介绍了高频算法题型:动态规划三步法的设计思路和实现方式,帮助你提升编程能力。
动态规划的核心思想:将复杂问题拆成子问题,记录子问题的解避免重复计算。
能用 DP 解决的问题必须满足两个条件:
- 最优子结构:大问题的最优解包含子问题的最优解
- 无后效性:当前状态确定后,未来的演化不受过去路径影响
2026/6/27大约 12 分钟
高频算法题型:动态规划三步法是计算机科学的核心,它为问题解决提供了高效的计算方法。
本文介绍了高频算法题型:动态规划三步法的设计思路和实现方式,帮助你提升编程能力。
动态规划的核心思想:将复杂问题拆成子问题,记录子问题的解避免重复计算。
能用 DP 解决的问题必须满足两个条件:
高频算法题型:双指针与滑动窗口是计算机科学的核心,它为问题解决提供了高效的计算方法。
本文介绍了高频算法题型:双指针与滑动窗口的设计思路和实现方式,帮助你提升编程能力。
双指针就是在遍历过程中用两个指针协同工作,根据指针移动方式的不同,分为三类:
高频算法题型:排序与二分查找是计算机科学的核心,它为问题解决提供了高效的计算方法。
本文介绍了高频算法题型:排序与二分查找的设计思路和实现方式,帮助你提升编程能力。
| 排序算法 | 平均时间 | 最坏时间 | 空间 | 稳定性 | 适用场景 |
|---|---|---|---|---|---|
| 冒泡排序 | O(n²) | O(n²) | O(1) | ✅ 稳定 | 教学 |
| 选择排序 | O(n²) | O(n²) | O(1) | ❌ 不稳定 | 教学 |
| 插入排序 | O(n²) | O(n²) | O(1) | ✅ 稳定 | 小数据/近乎有序 |
| 希尔排序 | O(n^1.3) | O(n²) | O(1) | ❌ | 中等数据 |
| 归并排序 | O(n log n) | O(n log n) | O(n) | ✅ 稳定 | 大数据/外部排序 |
| 快速排序 | O(n log n) | O(n²) | O(log n) | ❌ | 通用排序首选 |
| 堆排序 | O(n log n) | O(n log n) | O(1) | ❌ | 内存受限 |
| 计数排序 | O(n+k) | O(n+k) | O(k) | ✅ | 值域小 |
| 桶排序 | O(n+k) | O(n²) | O(n+k) | ✅ | 均匀分布 |
| 基数排序 | O(d×n) | O(d×n) | O(n+d) | ✅ | 多关键字 |