標籤:複雜 info append tin port return 個數 pre and
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=010 for i in range(cnt):11 right = list[i]12 result.append(right)13 if len(result) == 1:14 continue15 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] = right19 else:20 break21 return result22 23 #歸併排序24 def tog_sort(lists):25 if len(lists) <= 1:26 return lists27 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,034 result = []35 while l<len(left) and r<len(right):36 if left[l]<right[r]:37 result.append(left[l])38 l += 139 else:40 result.append(right[r])41 r += 142 result += left[l:]43 result += right[r:]44 return result45 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(‘毫秒‘)
兩萬個資料,兩種排序的時間對比,如:
排序時間複雜度對比