Merge sort
1 defMerge (Li, Low,mid, high):2i = Low3j = mid+14Ltmp = []5 whileI<=mid andJ <=High :6 ifli[i]<Li[j]:7 ltmp.append (Li[i])8i + = 19 Else:Ten ltmp.append (Li[j]) OneJ + = 1 A whilei<=Mid: - ltmp.append (Li[i]) -i + = 1 the whilej<=High : - ltmp.append (Li[j]) -J + = 1 -li[low:high+1]=ltmp + #li = [1,5,7,8,9,2,5,7,10] - #merge (Li,0,len (LI)//2,len (LI)-1) + #the time complexity of this algorithm is O (N*LOGN) A defMerge_sort (li,low,high): at iflow<High : -Mid = (Low+high)//2 - Merge_sort (Li,low,mid) -Merge_sort (li,mid+1, High) - merge (Li,low,mid,high) - in - Import Time to defTimer (func): + defInner (*args,**Kwargs): -Start =time.time () theret = func (*args,**Kwargs) *End =time.time () $ Print(end-start)Panax Notoginseng returnret - returnInner the @timer + defouter (li,low,high): A Merge_sort (Li,low,high) the #Import Random + #li = List (range) - #Random.shuffle (LI) $ #Print (LI) $ #outer (Li,0,len (LI)-1) # 1000 data time consuming 0.004s - #Print (LI) - the #li = List (range (10000)) - #Random.shuffle (LI)Wuyi #Print (LI) the #outer (Li,0,len (LI)-1) # 10,000 data time consuming 0.05s - #Print (LI)
Python algorithm--Fast sorting algorithm