氣泡排序的優化(python)

2021-09-26 23:55:27 字數 680 閱讀 1296

1、遇到的情況:對於s = [5, 1, 2, 3, 4]這個列表而言,只執行一次迴圈即可實現排序,如果繼續迴圈,就是1與2、3、 4進行排序,很浪費時間,所以沒必要。

2、解決辦法:

增加標示為flag,如果flag為true則表示還要繼續排序,否則直接輸出。

3、**

# coding: utf-8;

def bubble_sort(b):

n = len(b)

"""第乙個迴圈設定氣泡排序的次數,如果有n個數,那麼需要將n-1個數

進行歸位;

其中flag是標誌位,如果任意位置的相鄰的兩個數之間不用交換位置,

則flag = false,那麼直接

輸出,因為已經排好序了"""

for i in range(0, n-1):

flag = false

for j in range(0, n-1-i):

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

b[j], b[j+1] = b[j+1], b[j]

flag = true

if not flag:

return b

return b

a = [5, 2, 45, 6, 8, 2, 1]

print(bubble_sort(a))

優化氣泡排序(python)

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

python 氣泡排序 優化

li 11,22,44,88,66,55,33 def maopao li n len li 遍歷列表長度減1次,最後乙個不需要比較 for i in range 1,n 建立乙個變數flag,用來記錄本輪冒泡,是否有資料交換位置 flag false 每次遍歷都獲取乙個元素,依次和後面的元素進行比...

python 優化後的氣泡排序

基本原理 1.每兩兩相鄰的兩個元素依次比較,若前乙個元素比後乙個元素大,則交換位置。第一輪比較完成後最大的數字就跑到了最後乙個,第二輪比較完成後第二大的數字就跑到了最後倒數第二個。2.假設陣列有n個元素,則第一輪需比較n 1次,第二輪則只需比較n 2次 因為第一輪後最大的數字在最後乙個,第二輪就不用...