基於Java實現的冒泡排序算法


冒泡排序是一種簡單基礎的排序算法,相信在大學課堂里老師已經講過了,現在我基於Java來實現一遍。

簡述

冒泡排序正如其關鍵詞一樣,雜亂的氣泡經過浮動,最后大的氣泡飄到了上面而小的氣泡在下面,無序的元素序列的排序規則也是如此,每次比較相鄰的兩個數值,如果前面的數值大於后面的數值則進行交換,最后會將本次遍歷出來的最大數值排到最后位,然后按如此規則對剩余的無序序列進行類似的冒泡處理。

算法描述

  1. 比較相鄰的兩個元素,如果前面的比后面的大,則交換兩個元素;
  2. 對每每相鄰的元素都進行這樣的比較操作,從開始的一對到最后一對,這樣最后的元素會是本次遍歷完剩下的最大的元素;
  3. 針對所有的元素執行以上步驟,除了已經指派出來的最大的元素(或序列,序列排在了最末尾)
  4. 重復以上步驟直至排序完成。

動圖演示

(算法動圖來源於參考資料,詳細請往下翻閱)

代碼實現

 1     /**
 2      * 冒泡排序
 3      * 循環比較相鄰的兩個數,將較大的數放在后面
 4      * @param nums 待排序數值序列
 5      */
 6     private static int[] bubbleSort(int[] nums) {
 7         int len = nums.length;
 8         if(len == 0 || len == 1) {
 9             return nums;
10         }
11         for(int i = 0; i < len; i++) {
12             for(int j = 0, subLen = len - 1 - i; j < subLen; j++) {
13                 if(nums[j + 1] < nums[j]) {
14                     int tmp = nums[j + 1];
15                     nums[j + 1] = nums[j];
16                     nums[j] = tmp;
17                 }
18             }
19         }
20         return nums;
21     }

算法代碼實現已自我驗證,歡迎糾錯或者優化交流。

算法分析

冒泡排序算法時間復雜度分析,最佳情況:T(n) = O(n),最差情況:T(n) = O(n2),平均情況:T(n) = O(n2)

參考資料

本算法的實現和討論,均基於網絡博客,並在此基礎上進行了自我優化和整理,更加詳細和精彩內容,可移步以下博客:

1、https://www.cnblogs.com/guoyaohua/p/8600214.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM