數組排序之——冒泡排序

數組排序是經常會遇到的需求。排序的種類有很多,本文著重講解冒泡排序。

冒泡排序在排序中佔據著不可動搖的地位,經常在編程或者是面試過程遇到冒泡排序的問題。

冒泡排序的原理:

兩兩相鄰做比較,數值大的向後放。

舉例:

數組排序之——冒泡排序

此數組中存在五個無序的數據。 接下來的操作 我們就是要給這個數組的數據進行排序。

思路:

讓相鄰的兩個數據進行比較,如果發現前面的數據比後面的數據大,則交換這兩個數據。

第一輪比較

比較的下標 0-1 1-2 2-3 3-4 ,通過此次比較我們的效果如下

數組排序之——冒泡排序

第一輪比較(紅色部分)

第一輪比較中發現 比較了四次,當每次把大的數據向後移動,最終將最大的數據7放置到了數組的最後一個位置。 由此可見,每比較一輪可以確定一個數據的位置。那麼五個數據需要比較四輪即可完成排序。

第一輪的比較結果為

4,1,6,2,7

第二輪比較

因為上一輪中找到了7是最大的數據,所以本輪不需要進行比較7.

比較位置為 0-1 1-2 2-3

數組排序之——冒泡排序

第二輪比較(藍色部分)

第二輪中發現了數組中次大數據 6

所以第二輪比較結果為:

1,4 ,2,6,7

第三輪比較:

因為前兩輪已經確定了6,和7的位置,所以本輪不需要比較這兩個位置

第三輪比較位置: 0-1 1-2

數組排序之——冒泡排序

第三輪比較(綠色部分)

交換了 4與2 ,比較結果 1,2,4,6,7

雖然我們發現現在數據是有順序的,但是我們還沒有真正的讓1和2 進行過比較所以為了確保數據一定是有序 的我們需要第四輪比較

第四輪比較:

因為前三輪已經確定了 4,6,7 的位置,所以本輪不需要參與比較

第四輪比較位置 : 0-1

數組排序之——冒泡排序

第四輪比較(橙色部分)

此時結果為 1,2,4,6,7

這樣通過四輪的比較,發現我們的數組變得有序了。

由此可見,我們是通過數組.length-1輪的比較是可以將數組排好序的。接下來,用代碼實現:

數組排序之——冒泡排序

冒泡排序代碼實現

運行結果如下:

數組排序之——冒泡排序

運行結果


分享到:


相關文章: