第一次用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中 [