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[j
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dudly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值