數組排序是經常會遇到的需求。排序的種類有很多,本文著重講解冒泡排序。
冒泡排序在排序中佔據著不可動搖的地位,經常在編程或者是面試過程遇到冒泡排序的問題。
冒泡排序的原理:
兩兩相鄰做比較,數值大的向後放。
舉例:
此數組中存在五個無序的數據。 接下來的操作 我們就是要給這個數組的數據進行排序。
思路:
讓相鄰的兩個數據進行比較,如果發現前面的數據比後面的數據大,則交換這兩個數據。
第一輪比較
比較的下標 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輪的比較是可以將數組排好序的。接下來,用代碼實現:
運行結果如下:
閱讀更多 跟老司機學Java 的文章