归并排序是把数组分为两半,两半再继续细分为小的数组,小数组完成各自排序后,分别合并为几个比较大的数组并完成内部排序,最后合并为一个数组,这时候基本排序是有序的。
代码如下
data=[6,15,4,2,8,5,11,9,7,13]
def merge_sort(data):
if len(data)<=1:
return data
mid=len(data)//2
left=merge_sort(data[:mid])
right=merge_sort(data[mid:])
return merge(left,right)
def merge(left,right):
result=[]
i,j=0,0
while(i<len(left)) and (j<len(right)):
if left[i]<=right[j]:
result.append(left[i])
i+=1
else:
result.append(right[j])
j+=1
if i<len(left):
result.extend(left[i:])
if j<len(right):
result.extend(right[j:])
return result
print(merge_sort(data))
归并排序可以处理超过内存容量的大规模数据处理。
时间复杂度是O(nlogn)
空间复杂度是O(n)
标签:归并,right,python,merge,result,排序,data,left From: https://blog.csdn.net/2301_81968528/article/details/142664256