# python - python中的递归合并排序

``````def merge(A):

def merge_sort(A,first,last):
if first<last:
mid=(first last)//2
merge_sort(A,first, mid)
merge_sort(A,mid 1,last)

temp=[]
temp.append(99999)
i=first
j=mid 1
k=0
while i<=mid and j<=last:
if A[i]<=A[j]:
temp[k]=A[i]
k=k 1
i=i 1
else:
temp[k]=A[j]
k=k 1
j=j 1
while i<=mid:
temp[k]=A[i]
k=k 1
i=i 1
while j<=last:
temp[k]=A[j]
k=k 1
j=j 1
a=0
b=first
while a<k:
A[b]=temp[a]
b=b 1
a=a 1

merge_sort(A,0,len(A)-1)

return A
``````

#### 1 个答案:

``````def merge(A):

def merge_sort(A,first,last):
if first<last:
mid=(first last)//2
merge_sort(A,first, mid)
merge_sort(A,mid 1,last)

temp=[]
i=first
j=mid 1
k=0
while i<=mid and j<=last:
if A[i]<=A[j]:
temp.append(A[i])
k=k 1
i=i 1
else:
temp.append(A[j])
k=k 1
j=j 1
while i<=mid:
temp.append(A[i])
k=k 1
i=i 1
while j<=last:
temp.append(A[j])
k=k 1
j=j 1
a=0
b=first
while a<k:
A[b]=temp[a]
b=b 1
a=a 1

merge_sort(A,0,len(A)-1)

return A

A = [1,9,4,5]
print(A)
print(merge(A))
``````

``````[1, 9, 4, 5]
[1, 4, 5, 9]
``````

0条回复