以 3,2,1,5,4 爲例
一、冒泡排序
框住的兩個數就是被比較的兩個數,小數要在左邊,大數要到右邊去。
1. 第一輪,選出最大值
(1)【 3,2】,1,5,4
因爲 3 > 2,所以 2 移動到 3 的左邊
(2)2,【 3,1】,5,4
因爲 3 > 1, 所以 1 移動到 3 的左邊
(3)2,1,【 3,5】,4
因爲 3 < 5,所以不需要移動
(4)2,1,3,【 5,4】
因爲 5 > 4, 所以 4 移動到 5 的左邊
至此,第一輪比較已經結束,總共進行了4次比較。我們可以看到,現在的排序狀態是 [2,1,3,4,5
]。最大值 5 已經被成功地“運輸”到了最右邊,因此,我們只需要比較前面的四個數,找出第二個最大值,並將其“運輸”到倒數第二個位置。
2. 第二輪
紅色的數字代表已經被固定
(1)【2,1】,3,4,5
因爲 2 > 1,所以 1 移動到 2 的左邊。
(2)1,【2,3】,4,5
不變。
(3)1,2,【3,4】,5
不變。
至此,第二輪比較結束,總共進行了 3 次比較。我們可以看到,現在的排序狀態是 [1,2,3,4
,5
]。4 在這個時候已經處於 倒數第二個位置。其實我們肉眼看上去已經排序完畢了,但是計算機是不會察覺的,它只知道,此時倒數第二個數一定是第二大的,因此我們的冒泡排序還是要繼續進行。
3. 第三輪
(1)【1,2】,3,4
,5
不變。
(2)1,【2,3】,4
,5
不變。
至此,第三輪比較結束,總共進行了 2 次比較。我們可以看到,現在的排序狀態是 [1,2,3
,4
,5
]。倒數第三個數成爲第三大數值。
3. 第四輪
(1)【1,2】,3
,4
,5
不變。
至此,第四輪比較結束,總共進行了 1 次比較。此時數列的狀態是 [1,2
,3
,4
,5
] ,除了第一個數外的其它數值都固定住了,顯然第一個數就是最小的那個數了。因此,我們的冒泡排序就到此結束了。
待補充