排序 氣泡排序 Python

2021-08-05 21:22:15 字數 969 閱讀 9241

依次比較相鄰兩元素的大小,順序與要求的不一致就交換。這樣會把待排序序列中的最大(最小)元素不斷」浮」到最右端,最終完成公升序或降序排列。

對序列 [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, 4,5,6]

第二次迴圈:

[2, 1, 3, 4, 5, 6] –> [1,2, 3, 4, 5, 6]

class

solution:

# @param a an integer array

# @return nothing

defsortintegers

(self, a):

# 優化迴圈終止條件,可減少迴圈次數,當一次迴圈中沒有交換發生,則已經完全有序

f = 1

for i in range(len(a) - 1):

for j in range(len(a) - 1 - i):

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

self.swap(a, j, j + 1)

f = 0

if f:

break

defswap

(self, a, i, j):

tmp = a[j]

a[j] = a[i]

a[i] = tmp

最好時間複雜度o(

n),最差時間複雜度o(

n2) ,平均時間複雜度o(

n2)

Python排序 氣泡排序

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

Python排序演算法 氣泡排序

def bubblesort seq length len seq for i in range length for j in range length 1,i,1 if seq j 1 seq j seq j 1 seq j seq j seq j 1 if name main seq 2,9,...

python氣泡排序 選擇排序

氣泡排序 1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個的位置。2 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。完成一次完整的比較和交換位置時,最後的元素應該會是最大的數。3 針對所有的元素重複以上的步驟,除了最後乙個。4 持續每次對越來越少的元素重複上面的步驟,直到沒有任...