今天自己动手写了一下归并排序,感觉好像比网上查到的例子有一点点不同,自己更容易理解一点
代码如下:
def mergesort(mylist):
if len(mylist)<2:
return mylist
mid=len(mylist)//2
left=mergesort(mylist[:mid])
right=mergesort(mylist[mid:])
return merge(left,right)
def merge(left,right):
mylist=[]#定义个空列表,合并成新列表
while len(left)>0 and len(right)>0:#两个列表均不为空时,则继续比较,直到一方为空
if left[0]<right[0]:#比较两个列表的第一个元素,将较小的元素放进mylist
mylist.append(left[0])
left.pop(0)#从left中删除已经放进mylist的第一个元素
else:
mylist.append(right[0])
right.pop(0)
return mylist+right+left #循环结束后,将三个列表合并,right和left其中一个是空列表,所以直接加一起
mylist=[4,-1,2,1,3,5,11,1,6]
print(mergesort(mylist))
运行结果: