def INSERTION_SORT(A): for j in range(1,len(A)): # ython[,) #算法导论从1开始 python list从0开始 #print(A[j]) #test key = A[j] i = j - 1 while i >=0 and A[i] > key: A[i + 1] = A[i] i -= 1 A[i + 1] = key if __name__ == ‘__main__‘: A = [5,2,6,1,3] INSERTION_SORT(A) # 和java 传值相识 c指针?:**p print(A)
import decimal def MERGE(A,p,q,r): #归并 n1 = q - p +1 n2 = r - q L = [] R = [] for i in range(n1): L.append(A[p + i]) # 0开始 for j in range(n2): R.append(A[q + j+1]) #A[q+1 ,r] L.append(decimal.MAX_EMAX ) #10机制模块64位999999999999999999 R.append(decimal.MAX_EMAX) i = 0 j = 0 for k in range(p,r+1): #A[p,r] if L[i] <= R[j]: A[k] = L[i] i += 1 else: A[k] = R[j] j += 1 def MERGE_SORT(A,p,r): #A[p,r] if p < r: q = (p + r)//2 MERGE_SORT(A,p,q) MERGE_SORT(A,q+1,r) MERGE(A,p,q,r) if __name__ == ‘__main__‘: A = [5,2,4,7,1,3,2,6] print(A) MERGE_SORT(A,0,len(A)-1) print(A) ‘‘‘ 结果: ============== RESTART: F:\python\algorithms\2_3_merge_sort.py ============== [5, 2, 4, 7, 1, 3, 2, 6] [1, 2, 2, 3, 4, 5, 6, 7] 环境:win7 python3.5.1 注意: A区间的选取 python 的list从0开始 我选的是[ , ] ‘‘‘
原文:http://www.cnblogs.com/liguan/p/5151247.html