归并排序 (Merge Sort)

🧮 归并排序 (Merge Sort)

难度 / Difficulty: 中等 (Medium)
分类 / Category: 排序 (Sorting)
时间复杂度 / Time Complexity: O(n log n)
空间复杂度 / Space Complexity: O(n)


📖 算法简介 / Introduction

归并排序是采用分治策略的稳定排序算法,将数组递归分成小数组,排序后合并。

Merge sort is a stable sorting algorithm using divide-and-conquer, splitting arrays recursively, sorting, then merging.


💡 算法原理 / Principle

递归地将数组分成两半,分别排序后合并成一个有序数组。

Recursively split the array into two halves, sort each half, then merge them into a single sorted array.


📝 代码实现 / Implementation

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)

def merge(left, right):
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])
    result.extend(right[j:])
    return result

✨ 示例 / Example

数组 [38, 27, 43, 3, 9, 82, 10] 排序后为 [3, 9, 10, 27, 38, 43, 82]。

Array [38, 27, 43, 3, 9, 82, 10] becomes [3, 9, 10, 27, 38, 43, 82] after sorting.


🎯 适用场景 / Scenarios

外部排序, 链表排序, 需要稳定排序

External sorting, Linked list sorting, Requiring stable sorting


🔄 扩展阅读 / Further Reading

  • 建议在 LeetCode 或 HackerRank 上刷相关题目
  • 尝试自己实现非递归版本
  • 对比其他同类型算法的性能差异

*本文由 AI 自动生成 Generated by AI*