標籤:int class return tar 複雜度 log port python演算法 out
歸併排序
1 def merge(li, low,mid, high): 2 i = low 3 j = mid+1 4 ltmp = [] 5 while i<=mid and j <=high: 6 if li[i]<li[j]: 7 ltmp.append(li[i]) 8 i += 1 9 else:10 ltmp.append(li[j])11 j += 112 while i<=mid:13 ltmp.append(li[i])14 i += 115 while j<=high:16 ltmp.append(li[j])17 j += 118 li[low:high+1]=ltmp19 # li = [1,5,7,8,9,2,5,7,10]20 # merge(li,0,len(li)//2,len(li)-1)21 # 本演算法時間複雜度為O(n*logn)22 def merge_sort(li,low,high):23 if low<high:24 mid = (low+high)//225 merge_sort(li,low,mid)26 merge_sort(li,mid+1,high)27 merge(li,low,mid,high)28 29 30 import time31 def timer(func):32 def inner(*args,**kwargs):33 start = time.time()34 ret = func(*args,**kwargs)35 end = time.time()36 print(end-start)37 return ret38 return inner39 @timer40 def outer(li,low,high):41 merge_sort(li,low,high)42 # import random43 # li = list(range(1000))44 # random.shuffle(li)45 # print(li)46 # outer(li,0,len(li)-1) # 1000個資料費時0.004s47 # print(li)48 49 # li = list(range(10000))50 # random.shuffle(li)51 # print(li)52 # outer(li,0,len(li)-1) # 10000個資料費時0.05s53 # print(li)
python演算法——快速排序演算法