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

Java 經典排序算法實現:選擇排序與冒泡排序代碼詳解

     編輯:Java 綜合教學

選擇排序

每輪從未排序區選最小元素換到有序區末尾,時間複雜度 O(n²),不穩定。

public class SelectionSort {
    public static void sort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int minIdx = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[minIdx]) minIdx = j;
            }
            if (minIdx != i) {
                int tmp = arr[i]; arr[i] = arr[minIdx]; arr[minIdx] = tmp;
            }
        }
    }
}

冒泡排序

相鄰元素兩兩比較,大者後移,每輪將最大元素「冒泡」到末尾,可優化加旗標提前終止。

public class BubbleSort {
    public static void sort(int[] arr) {
        boolean swapped;
        for (int i = 0; i < arr.length - 1; i++) {
            swapped = false;
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp;
                    swapped = true;
                }
            }
            if (!swapped) break;  // 本輪無交換,已有序
        }
    }
}

複雜度對比

算法最好平均最壞空間穩定性
選擇排序O(n²)O(n²)O(n²)O(1)不穩定
冒泡排序O(n)O(n²)O(n²)O(1)穩定

教學階段理解原理即可,生產環境請直接使用 Arrays.sort() (雙軸快排/TimSort)。

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