#本程序用于对一个数组进行合并(merge)排序,这个数组满足:
1,可以从中间分成两半部分;
2,两部分各自本来就是有序的。
本程序是归并排序算法的一部分。效果是实现了从小到大排列。本程序时间复杂度O(n),n为待排序数组长度
#本程序用于对一个数组进行合并(merge)排序,这个数组满足:1,可以从中间分成两半部分;2,两部分各自本来就是有序的。本程序是归并排序算法的一部分。效果是实现了从小到大排列。本程序时间复杂度O(n),n为待排序数组长度
def mergesort(a=[]):#定义一个输入变量为数组的python函数
mid = int((len(a)-1)/2)#定位中间点
temp = [0 for x in range(0,len(a))]#开辟一个等长的空的临时数组,用于临时存放比较结果
k=0
i = 0 #先定位好左半部分开始指针
j = mid+1#再定位好右半部分开始指针
while k < len(a):
if i <=mid and j <= len(a)-1:#当左半部分没有循环结束且右半部分也没有循环结束时
#print("i=",i,"j=",j,"k=",k)#多处print注释是因为一开始写错了,调试了很久orz
if a[i]<a[j]:#如果左半部分指针指向的数小于右半部分指针指向的数
#print("a[i]=",a[i],"a[j]=",a[j])
t