python实现归并排序(代码详解)

博主分享了自己首次使用Python实现归并排序的过程,强调了实践中遇到的语法挑战和学习经验,提醒学习者要避免眼高手低。提供的归并排序代码已验证可行,并带有注释。
摘要由CSDN通过智能技术生成

第一次用python写排序算法,刚下手的时候还有点蒙,一些语法和C都不太一样,之前总是看程序,觉得是语法都熟悉了,结果自己下手的时候还会有很多语法错误,说明学习还是要落实到practice啊,切记眼高手低。
PS:代码是已经跑通了的,可以直接运行,相关注释已经在代码中了

a = [3,7,2,8,5,9,1,6]
# print(a[1])
# a.sort()
# print(len(a))
length = len(a)
# j = 1
# print((1,2,3 )if 100>1000 else (4,5,6,j +=1))

# 传入参数为待排序数组a, 和数组a的长度
def MergeSort(a, length):
    auxi = [0]*length
    SortProcess(a, auxi, 0, length-1)
    # print(a)

# 传入的参数为待排序数组a,辅助排序数组auxi,左边界L,右边界R(数组中的右边界,不是数的右边界,即从0开始)
def SortProcess(a, auxi, L, R):
    # 该函数是将待排序数组a中的[L, R]区间的数进行归并排序,并将结果放到辅助排序数组auxi中
    if(L == R):
        return
    midle = int((L+R)/2)
    SortProcess(a, auxi, L, midle)
    SortProcess(a, auxi, midle+1, R)
    Merge(a, auxi, L, midle, R)   # 归并函数

# 传入的参数为数组a, 辅助排序数组auxi, 左边界L,中间值midle,右边界R
def Merge(a, auxi, L, midle, R):
    # 将数组a中 [
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值