- 分治法的性能构成:分治法的时间复杂度由分解子问题、递归求解子问题、合并子问题的解三部分组成。其中分解步骤通常是O(1)(仅划分问题),递归求解子问题的复杂度是子问题复杂度的和,合并步骤的效率直接决定了算法的整体时间复杂度。
- 归并排序的合并过程分析:
1. 归并排序的分解步骤:将待排序数组划分为左右两个子数组,时间复杂度O(1)。
2. 递归求解子问题:对两个子数组分别递归排序,时间复杂度为2T(n/2)。
3. 合并步骤:将两个有序子数组合并为一个有序数组,需要遍历两个子数组的所有元素,时间复杂度O(n)。
4. 整体复杂度推导:根据递推公式T(n)=2T(n/2)+O(n),解得归并排序的时间复杂度为O(n\log n)。若合并步骤的效率降低(例如合并的时间复杂度变为O(n^2)),则整体时间复杂度会上升为O(n^2),算法性能大幅下降。
- 结论:合并步骤的时间复杂度越低,分治法的整体性能越好;若合并步骤效率低下,会直接拉高算法的整体时间复杂度,抵消分治法“分而治之”的效率优势。