python实现归并排序

本文介绍了一种经典的分治算法——归并排序,并提供了详细的Python代码实现。通过递归将数组分成更小的部分进行排序,再合并成有序数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

归并排序是一个典型的分治算法。
问题描述

代码实现:

def mergeSort(list,start,end): #i节点的子节点为2i+1,2i+2
    if end>start:
        mid=(start+end)//2
        mergeSort(list,start,mid)
        mergeSort(list,mid+1,end)
        merge(list,start,end)
def merge(list,start,end):
    mid=(start+end)//2
    l=list[start:mid+1]
    r=list[mid+1:end+1]
    index_l,index_r,index=0,0,0
    while(index_l<len(l) and index_r<len(r)):
        if l[index_l]<r[index_r]:
            list[start+index]=l[index_l]
            index_l+=1
        else:
            list[start + index] = r[index_r]
            index_r+=1
        index+=1
    if index_l==len(l):
        list[end-(len(r)-index_r)+1:end+1]=r[index_r:]
    if index_r==len(r):
        list[end-(len(l)-index_l)+1:end+1]=l[index_l:]
list=[11,2,3,4,12,18,16]
mergeSort(list,0,len(list)-1)
print(list)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值