1 #-*- coding: UTF-8 -*- 2 import numpy as np 3 4 def Merge(a, f, m, l): 5 i = f 6 j = m + 1 7 tmp = [] 8 while i <= m and j <= l: 9 if a[i] <= a[j]: 10 tmp.append(a[i]) 11 i += 1 12 else: 13 tmp.append(a[j]) 14 j += 1 15 16 while i <= m: 17 tmp.append(a[i]) 18 i += 1 19 while j<= l: 20 tmp.append(a[j]) 21 j+= 1 22 i = f 23 for x in xrange(0, len(tmp)): 24 a[i] = tmp[x] 25 i += 1 26 27 def MergeSort(a, f, l): 28 if f< l: 29 m = (l + f) / 2 30 MergeSort(a, f, m) 31 MergeSort(a, m+1, l) 32 Merge(a, f, m, l) 33 34 if __name__ == '__main__': 35 a = np.random.randint(0, 10, size = 10) 36 print "Before sorting..." 37 print "---------------------------------------------------------------" 38 print a 39 print "---------------------------------------------------------------" 40 MergeSort(a, 0, a.size-1) 41 print "After sorting..." 42 print "---------------------------------------------------------------" 43 print a 44 print "---------------------------------------------------------------"