1 #分治法-并归排序 2 3 def merge(A,p,q,r): 4 #排序A中【p,q】,和【q+1,r】 5 n1=q-p+1 6 n2=r-q 7 L=[] 8 R=[] 9 for i in range(n1): 10 L.append(A[p+i]) 11 for j in range(n2): 12 R.append(A[q+1+j]) 13 L.append(float('inf')) 14 R.append(float('inf')) 15 i=0 16 j=0 17 for k in range(p,r+1): 18 if L[i]<=R[j]: 19 A[k]=L[i] 20 i=i+1 21 else: 22 A[k]=R[j] 23 j=j+1 24 25 import math 26 def merge_sort(A,p,r): 27 #排序A【p,r】 28 if p < r: 29 q = math.floor((p+r)/2)#取整 30 merge_sort(A,p,q) 31 merge_sort(A,q+1,r) 32 merge(A,p,q,r) 33 34 A=[5,2,4,7,1,3,2,6] 35 36 merge_sort(A,0,len(A)-1) 37 38 print(A) 39 ------------------------------------------------ 40 [1, 2, 2, 3, 4, 5, 6, 7]
分治法-归并排序
猜你喜欢
转载自www.cnblogs.com/yu-liang/p/9163558.html
今日推荐
周排行