🧠 算法简介
合并排序是一种分治法实现的稳定排序算法,时间复杂度为 O(n log n)。其核心思想是将数组分为两半,分别排序后再合并。
✅ Python 实现代码
def merge_sort(arr):
"""合并排序算法实现"""
if len(arr) > 1:
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
# 递归排序左右子数组
merge_sort(left)
merge_sort(right)
# 合并有序子数组
i = j = k = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
arr[k] = left[i]
i += 1
else:
arr[k] = right[j]
j += 1
k += 1
# 处理剩余元素
while i < len(left):
arr[k] = left[i]
i += 1
k += 1
while j < len(right):
arr[k] = right[j]
j += 1
k += 1
return arr
# 示例用法
if __name__ == "__main__":
nums = [38, 27, 43, 3, 9, 82, 10]
print("原始数组:", nums)
print("排序结果:", merge_sort(nums))
📚 相关扩展阅读
⚠️ 注意事项
- 合并排序需要额外 O(n) 空间复杂度
- 适合用于链表结构排序(数组实现时需注意内存分配)
- 是稳定排序算法,适合需要保持相同元素相对顺序的场景