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

經典 JavaSE 面試題:陣列排序兩種實作(Arrays.sort vs 冒泡排序)

     編輯:Java 相關知識

題目背景

面試常考:如何對陣列進行排序?主要有兩種思路:呼叫 JDK 內建 java.util.Arrays.sort() 或自行實作演算法(如冒泡排序)。本文提供完整可執行程式碼與執行結果對照。

方法一:使用 Arrays.sort() 靜態方法

Arrays 類別提供多種陣列操作,sort() 採用優化的快速排序(基本型態)或合併排序(物件),效能優於自行實作的簡單演算法。

package cn.z_xiaofei168.sort;

import java.util.Arrays;

public class TestArraySort {
    public static void main(String[] args) {
        int[] arr = { -1, -3, 5, 7, 9, 2, 4, 6, 8, 10 };
        System.out.print("整數排序前:");
        displayIntArr(arr);
        Arrays.sort(arr);
        System.out.print("整數排序後:");
        displayIntArr(arr);

        String[] name = {"Tom","Kitty","James","z_xiaofei168","DXL_xiaoli","Zhang_Di"};
        System.out.print("字串排序前:");
        displayStringArr(name);
        Arrays.sort(name);
        System.out.print("字串排序後:");
        displayStringArr(name);
    }

    static void displayIntArr(int[] arr) {
        for (int i : arr) System.out.print(i + "\t");
        System.out.println();
    }
    static void displayStringArr(String[] arr) {
        for (String s : arr) System.out.print(s + "\t");
        System.out.println();
    }
}

執行結果

方法二:冒泡排序演算法實作

雙層迴圈相鄰比較交換,時間複雜度 O(n²),適合教學理解排序原理,實務上不建議用於大量資料。

package cn.z_xiaofei168.sort;

public class TestMaopao {
    public static void main(String[] args) {
        int[] arr = { -1, -3, 5, 7, 9, 2, 4, 6, 8, 10 };
        System.out.print("整數排序前:");
        for (int ar : arr) System.out.print(ar + "\t");
        System.out.println();

        displayIntArr(arr); // 排序

        System.out.print("整數排序後:");
        for (int a : arr) System.out.print(a + "\t");
    }

    /** 冒泡排序 */
    static void displayIntArr(int[] arr) {
        for (int i = arr.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

執行結果

延伸思考

  • Arrays.sort() 為雙軸快速排序(Java 7+),基本型態平均 O(n log n),且經過大量優化。
  • 實務開發優先使用標準庫,除非有特殊排序需求(如自定義比較器、外部排序)。
  • 其他常見排序:快速排序、合併排序、堆積排序、計數排序、基數排序等,視資料特性選擇。

歡迎留言分享更多排序實作方式,共同學習進步!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved