首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 數組排序入門:冒泡排序手寫實現與常見錯誤避坑

     編輯:Java 相關知識

初學者實戰代碼

public class ArraySortDemo {
    public static void main(String[] args) {
        int[] arr = {32, 11, 44, 70, 4, 2, 8, 100, 300, 5, 1};
        
        // 冒泡排序 (升序)
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        
        // 輸出結果
        for (int num : arr) {
            System.out.print(num + " ");
        }
        // 輸出: 1 2 4 5 8 11 32 44 70 100 300
    }
}

代碼解析

  1. 外層循環 i:控制排序輪數,共 n-1 輪。
  2. 內層循環 j:每輪將最大值「冒泡」到末尾,範圍逐輪縮減 length-1-i。
  3. 交換邏輯:臨時變量 temp 完成兩元素位置互換。
  4. 增強版:加入 boolean swapped 標誌,若某輪無交換提前結束 (最好情況 O(n))。

常見錯誤與修正

生產環境建議

// 一行搞定,高性能、穩定、無腦
Arrays.sort(arr);          // 基本類型雙軸快排
Arrays.parallelSort(arr);  // 大數據量多核並行 (JDK 8+)

手寫排序僅為面試/教學/特殊約束場景,實際開發**堅決使用標準庫**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤代碼問題修正
for(int j=0; j<a.length; j++)越界訪問 a[j+1]j < a.length - 1 - i
if (a[j] < a[j+1])降序而非升序根據需求調整比較方向
交換邏輯寫錯數據丟失必須用臨時變量三步交換
直接打印 arr輸出地址而非內容遍歷打印或 Arrays.toString(arr)