排序时间复杂度对比
程序员文章站
2023-01-11 13:12:19
两万个数据,两种排序的时间对比,如下图: ......
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import random 4 import datetime 5 6 #插入式排序 7 def insert_sort(list,result): 8 cnt = len(list) 9 i=0 10 for i in range(cnt): 11 right = list[i] 12 result.append(right) 13 if len(result) == 1: 14 continue 15 for j in range(len(result)-1,0,-1): 16 if right < result[j-1]: 17 result[j] = result[j-1] 18 result[j-1] = right 19 else: 20 break 21 return result 22 23 #归并排序 24 def tog_sort(lists): 25 if len(lists) <= 1: 26 return lists 27 num = int(len(lists)/2) 28 left = tog_sort(lists[:num]) 29 right = tog_sort(lists[num:]) 30 return sort(left,right) 31 32 def sort(left,right): 33 l,r = 0,0 34 result = [] 35 while l<len(left) and r<len(right): 36 if left[l]<right[r]: 37 result.append(left[l]) 38 l += 1 39 else: 40 result.append(right[r]) 41 r += 1 42 result += left[l:] 43 result += right[r:] 44 return result 45 46 if __name__ == '__main__': 47 list = [] 48 result = [] 49 for i in range(20000): 50 list.append(random.randint(1, 200)) 51 print('before:') 52 print(list) 53 starttime = datetime.datetime.now() 54 insert_sort(list,result) 55 print('插入式排序:') 56 print(result) 57 endtime = datetime.datetime.now() 58 print((endtime - starttime).seconds,end='') 59 print('秒',end='') 60 print((endtime - starttime).microseconds,end='') 61 print('毫秒') 62 63 starttime = datetime.datetime.now() 64 result = tog_sort(list) 65 print('归并排序:') 66 print(result) 67 endtime = datetime.datetime.now() 68 print((endtime - starttime).seconds, end='') 69 print('秒', end='') 70 print((endtime - starttime).microseconds, end='') 71 print('毫秒')
两万个数据,两种排序的时间对比,如下图: