您的位置:首页 > 编程语言 > Python开发

python实现归并排序 --算法导论

2020-06-06 07:47 465 查看
def merge(A, p, q, r):
n1 = q - p + 1
n2 = r - q
L = list(range(n1 + 1))
R = list(range(n2 + 1))
for i in range(0, n1):
L[i] = A[p + i]
for j in range(0, n2):
R[j] = A[q + j + 1]
L[n1] = 10000 #这里可以使用无穷大/也可以使用一个比数组最大的元素大的值
R[n2] = 10000
i = 0
j = 0
for k in range(p, r+1):
if L[i] <= R[j]:
A[k] = L[i]
i = i + 1
else:
A[k] = R[j]
j = j + 1
def mergesort(A, p, r):
if p < r:
q = int((p+(r-1))/2)
mergesort(A,p,q)
mergesort(A,q+1,r)
merge(A,p,q,r)
return A
A = []
n = int(input("请输入你需要排序的数组的长度:"))
for i in range(0, n):
B = int(input("请依次输入你需要排序的数组元素:"))
A.append(B)
print(mergesort(A, 0, len(A)-1))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: