一、归并排序(Merge Sort)
1. 算法思想
分治策略的经典应用,核心思想是:
-
分:递归地将数组分成两半
-
治:将两个有序子数组合并成完整有序数组
-
合:合并过程是算法的核心操作
2. 关键步骤分解
def merge_sort(arr):
if len(arr) > 1: # 递归终止条件
mid = len(arr) // 2
L = arr[:mid] # 时间复杂度 O(n) 的空间消耗来源
R = arr[mid:]
merge_sort(L) # 时间复杂度 O(log n)
merge_sort(R) # 的分割层次
# 合并操作开始(核心)
i = j = k = 0
while i < len(L) and j < len(R):
if L[i] < R[j]: # 稳定性关键:相等时取左边元素
arr[k] = L[i]
i += 1
else:
arr[k] = R[j]
j