python的氣泡排序

2021-09-25 18:43:04 字數 1499 閱讀 6836

氣泡排序:(英語:bubble sort)是一種簡單的排序演算法。它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來,直到不再需要交換,也就是說該數列已經排序完成。

按照定義,兩兩排序,遇到第一次交換就重新遍歷,從第乙個數開始,直到不再需要交換,排序完成。

在這裡,分享三種氣泡排序的方法。

第一種:最普遍的冒泡演算法

lista = [1,5,47,31,945,458,21,6]      #定義一組數,準備排序

for i in range(len(lista) - 1): #從第乙個數取到倒數第二個數,因為最後乙個數沒有相鄰的數來進行排序

for j in range(i+1,len(lista)): #選取的元素與他後面所有的元素進行兩兩比較,遇到第乙個需要交換的,重新遍歷

if lista[i] >lista[j]: #判斷是否需要排序

lista[j],lista[i] = lista[i],lista[j] #交換位置

print(lista) #檢查執行過程,不做**主要內容

pass

pass

pass

print(lista) #輸出結果,本次為從小到大

lista = [1,5,47,31,945,458,21,6]

for i in range(len(lista) - 1): #交換輪次,數的個數-1

for j in range(len(lista) - i-1): #每乙個輪次兩個相鄰的數都要比一遍,直到沒有交換的後,重新遍歷

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

lista[j],lista[j+1] = lista[j+1],lista[j]

print(lista) #檢驗執行過程

pass

pass

print(lista)

第三種:最土冒泡演算法的優化(節省了比較的次數)

lista = [1,5,47,31,945,458,21,6] 

for i in range(len(lista) - 1): #交換輪次,數的個數-1

flag = false #定義乙個標記

for j in range(len(lista) - i-1): #每乙個輪次兩個相鄰的數都要比一遍

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

print(lista)

lista[j],lista[j+1] = lista[j+1],lista[j]

flag = true #交換就做標記

pass

pass

if not flag: #當不需要交換時,退出迴圈

break

print(lista)

氣泡排序為簡單的排序內容,需熟練掌握其中一種方法!

排序 氣泡排序 Python

依次比較相鄰兩元素的大小,順序與要求的不一致就交換。這樣會把待排序序列中的最大 最小 元素不斷 浮 到最右端,最終完成公升序或降序排列。對序列 2,4,1,3,6,5 按公升序排列 只記錄有交換發生的迴圈 第一次迴圈 2,4,1,3,6,5 2,1,4,3,6,5 2,1,3,4,6,5 2,1,3...

Python排序 氣泡排序

排序 氣泡排序 氣泡排序演算法的原理如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需...

Python氣泡排序

需求 對於一串不知道個數的無序數進行從大到小或從小到大排序。氣泡排序 思想 首先第乙個數與第二個數做比較,大者放後面作為新的第二個數,然後,第二個數再與第三個數作比較,大者放後面作為新的第三個數,以此類推,相鄰兩位置數比較大小,若前者大於後者,則交換位置,這樣遍歷完一次資料就把最大數放在了最後面,即...