冒泡排序 (穩定) O(n^2)
(穩定:表示相等的數,相對位置會不會改變)
冒泡排序(Bubble Sort)是一種簡單的排序算法,它通過多次遍歷待排序的元素,比較相鄰兩個元素的大小并交換它們,從而將最大(或最小)的元素逐步移到最后。以下是 Python 中冒泡排序的實現:
代碼示例:
list=[1,4,3,9,8]
for i in range(0,len(list)-1):for j in range(0,len(list)-1-i):if list[j]>list[j+1]:list[j],list[j+1]=list[j+1],list[j]
print(list)
結果顯示:
我的理解:
冒泡排序的思想相對簡單,可以通過以下方式進行簡單理解:
-
比較相鄰元素: 從數組的第一個元素開始,依次比較相鄰的兩個元素。
-
交換元素位置: 如果前面的元素比后面的元素大(升序排序),則交換它們的位置,將較大的元素移到后面。
-
遍歷整個數組: 繼續進行上述比較和交換的操作,直到遍歷整個數組。
-
一輪完成: 這樣一輪的操作之后,數組中最大的元素已經被移到了最后。
-
重復操作: 重復上述步驟,每一輪都將數組中當前未排序的最大元素移到了正確的位置。
-
排序完成: 當數組中不再存在需要交換的元素時,排序完成。
示例理解:
考慮數組 [64, 34, 25, 12, 22, 11, 90]
:
-
第一輪:
- 比較并交換 64 和 34,得到
[34, 64, 25, 12, 22, 11, 90]
。 - 比較并交換 64 和 25,得到
[34, 25, 64, 12, 22, 11, 90]
。 - …
- 比較并交換 11 和 90,得到
[34, 25, 12, 22, 11, 64, 90]
。
- 比較并交換 64 和 34,得到
-
第二輪:
- …
- 比較并交換 11 和 64,得到
[34, 25, 12, 22, 11, 64, 90]
。
-
第三輪:
- …
- 比較并交換 11 和 34,得到
[25, 12, 22, 11, 34, 64, 90]
。
-
以此類推,最終得到有序數組
[11, 12, 22, 25, 34, 64, 90]
。
雖然冒泡排序的性能相對較低,但通過上述簡單的比較和交換操作,我們可以將較大的元素逐步“浮”到數組的末尾,從而實現排序。