python 氣泡排序 優化

2021-10-20 00:27:43 字數 650 閱讀 2950

li = [11,22,44,88,66,55,33]

def maopao(li):

n = len(li)

# 遍歷列表長度減1次,最後乙個不需要比較

for i in range(1, n):

# 建立乙個變數flag,用來記錄本輪冒泡,是否有資料交換位置

flag= false

# 每次遍歷都獲取乙個元素,依次和後面的元素進行比較

for j in range(n - i):

# 判斷前元素,和後乙個元素的值,如果前者大於後者,則交換位置

if li[j] > li[j + 1]:

# 交換當前元素和後乙個元素的值

li[j], li[j + 1] = li[j + 1], li[j]

# 發生了資料交換位置,則修改flag的值,表示發生了資料交換,資料不是有序的

flag= true

# 每一輪冒泡結束之後,判斷當前flag是否為flase,

# 如果為flase,則說明上一輪冒泡沒有修改資料的順序,說明資料是有序的,不需要繼續冒泡了

if not flag:

# 順序沒有變更,資料已經是有序的了,終止冒泡

return li

return li

maopao(li)

優化氣泡排序(python)

記錄交換操作發生的位置,如果沒有發生交換操作,則代表排序已經可以終止 這樣一來氣泡排序最好的情況下,時間複雜度就從o n 2 優化到了o n def imroved bubble sort l length len l swaplast length 1for i in range len l si...

Python 如何優化氣泡排序

什麼叫氣泡排序法?相信有接觸過演算法的朋友多少都了解氣泡排序法,那麼什麼是氣泡排序法呢?氣泡排序,英文名稱 bubble sort 是一種基礎的交換排序演算法,在日常工作中經常會用到,例如 頁面資料需按時間先後排序,這本質上也是一種氣泡排序法。喝過可樂的朋友都知道,可樂裡面的氣泡會向上浮,這就是氣泡...

氣泡排序的優化(python)

1 遇到的情況 對於s 5,1,2,3,4 這個列表而言,只執行一次迴圈即可實現排序,如果繼續迴圈,就是1與2 3 4進行排序,很浪費時間,所以沒必要。2 解決辦法 增加標示為flag,如果flag為true則表示還要繼續排序,否則直接輸出。3 coding utf 8 def bubble sor...