依次比較相鄰兩元素的大小,順序與要求的不一致就交換。這樣會把待排序序列中的最大(最小)元素不斷」浮」到最右端,最終完成公升序或降序排列。
對序列 [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 持續每次對越來越少的元素重複上面的步驟,直到沒有任...