归并排序算法 python

a = [2,4,2,1,3,45,54,34,23,12,7,8,6,5,41,9]

s = '原数组为:' + repr(a)

print(s)

 

def merge(a1,a2):

    f=[]

    a1=sorted(a1)#将数组分为左右两部分后,分别对左右两部分进行排序

    a2=sorted(a2)

    while a1 and a2:

        if a1[0] <= a2[0] :

            # append : 向数组f追加元素

            # pop : 将数组中的元素抛出

            f.append(a1.pop(0))

        else:

            f.append(a2.pop(0))

    return f + a2 + a1

 

def ms(lst):

    # len : 计算数组长度

    if len(lst) <= 1 :

        return lst

    mid = len(lst) // 2

    # list[:mid] : 是指列表中的元素从零开始到mid-1之间的元素

    # list[mid:] : 是指列表中的元素从mid到列表末尾之间的元素

    returnmerge(ms(lst[:mid]),ms(lst[mid:]))

 

s = '排序后的数组为:' + repr(ms(a))

print(s)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值