Python实现八大排序算法(二:O(nlogn)高级排序篇--归并、快排、堆排)

4. 归并排序(Merge Sort)

4.1. 核心思想

“分而治之:将数组递归拆分为最小单元,再有序合并”

4.2. 关键概念

  • 递归分治:将数组不断二分直到单个元素
  • 稳定排序:合并时相等元素保持原顺序
  • 空间换时间:需要O(n)额外空间

4.3. 算法步骤

  1. 递归将数组对半拆分
  2. 当子数组长度为1时停止拆分
  3. 合并两个已排序的子数组
  4. 重复合并直到完整有序

4.4. Python实现

4.4.1. 递归方法

def merge_sort_recurive(arr):
    if len(arr) > 1:
        mid = len(arr) // 2
        L = arr[:mid]
        R = arr[mid:]
        
        merge_sort_recurive(L)
        merge_sort_recurive(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 += 1
            k += 1
        
        while i < len(L):
            arr[k] = L[i]
            i += 1
            k += 1
            
        while j < len(R):
            arr[k] = R

你可能感兴趣的:(排序算法,python,算法)