1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
arr = [5,4,1,7,2,0,3,0,6] def mergeSort(arr,l,r): if l == r: return m = (l+r)//2 mergeSort(arr,l,m) mergeSort(arr,m+1,r) merge(arr,l,m,r) def merge(arr,l,m,r): help = [None]*(r-l+1) i = 0 p1 = l cur = m+1 while p1 <= m and cur <= r: if arr[p1] <= arr[cur]: help[i] = arr[p1] p1 += 1 i += 1 else: help[i] = arr[cur] cur += 1 i += 1 while p1 <= m: help[i] = arr[p1] p1 += 1 i += 1 while cur <= r: help[i] = arr[cur] cur += 1 i += 1 for i in range(0,len(help)): arr[l+i] = help[i] i += 1 mergeSort(arr,0,len(arr)-1) print(arr)
|
近期评论