氣泡排序及優化(python實現)
阿新 • • 發佈:2019-02-18
氣泡排序大家應該都很熟悉,是一個比較交換排序,時間複雜度是O(n2),之前用過java實現過,現在用python來實現一次,還有其優化
總共用了三種實現方式
話不多說,直接上程式碼,比較三種的效能------------------
#! -*- coding:utf-8 -*- #氣泡排序 import time #野路子氣泡排序 def maopaosort1(array): time1_start = time.time() length = len(array) while length>1: for i in range(length-1): if array[i] > array[i+1]: array[i],array[i+2] = array[i+1],array[i] length -= 1 #print(array) time1_end = time.time() print(time1_end-time1_start) #正常氣泡排序無優化 def maopaosort2(array): time2_start = time.time() length = len(array) for i in range(length)[::-1]: for j in range(i): if array[j]>array[j+1]: array[j],array[j+1] = array[j+1],array[j] #print(array) time2_end = time.time() print(time2_end-time2_start) #正常氣泡排序有優化 def maopaosort3(array): time3_start = time.time() length = len(array) for i in range(length)[::-1]: flag = False for j in range(i): if array[j]>array[j+1]: array[j],array[j+1] = array[j+1], array[j] flag=True if not flag: break #print(array) time3_end = time.time() print(time3_end-time3_start) list = [3,2,5,6,7,8,9,10,11]+list(range(12,1000)) maopaosort1(list) print('-----------------------------') maopaosort2(list) print('-----------------------------') maopaosort3(list)
執行結果如下:
在博主程式中的例子下,第三種優化後的氣泡排序比前兩種效能好的不是一個數量級