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

Java 實現八大經典排序算法:插入、冒泡、選擇、希爾、快速、歸併、堆、基數完整代碼與性能對比

     編輯:Java 相關知識

排序是演算法入門必修課。本文一次性給齊八大排序的 Java 標準實現:EightAlgorithms 工具類封裝所有靜態方法,TestEightAlgorithms 統一測試入口,附時間複雜度註解與實測輸出,適合教學、面試、基準測試參考。

算法清單與複雜度

算法方法名平均時間最壞時間空間穩定性
插入排序insertSortO(n²)O(n²)O(1)穩定
冒泡排序bubbleSortO(n²)O(n²)O(1)穩定
選擇排序selectSortO(n²)O(n²)O(1)不穩定
希爾排序shellSortO(n^1.3~n^1.5)O(n²)O(1)不穩定
快速排序quickSortO(n log n)O(n²)O(log n)不穩定
歸併排序mergeSortO(n log n)O(n log n)O(n)穩定
堆排序heapSortO(n log n)O(n log n)O(1)不穩定
LSD 基數排序lstRadixSortO(d(n+r))O(d(n+r))O(n+r)穩定

核心代碼結構 (EightAlgorithms.java)

public class EightAlgorithms {
    public static void insertSort(int[] a, int n) { ... }
    public static void bubbleSort(int[] a, int n) { ... }
    public static void selectSort(int[] a, int n) { ... }
    public static void shellSort(int[] a, int n) { ... }
    public static void quickSort(int[] a, int n) { _quickSort(a, 0, n-1); }
    public static void mergeSort(int[] a, int n) { _mergeSort(a, 0, n-1); }
    public static void heapSort(int[] a, int n) { ... }
    public static void lstRadixSort(int[] a, int n, int radix, int distance) { ... }
    // 私有輔助方法:_quickSort, _partition, _mergeSort, _merge, buildMaxHeap, upAdjust, adjustNode
}

測試驅動 (TestEightAlgorithms.java)

int[] arr = {45,38,26,77,128,38,25,444,61,153,9999,1012,43,128};
for (int i = 1; i <= 8; i++) {
    int[] copy = arr.clone();
    switch(i) { case 1: EightAlgorithms.insertSort(copy, copy.length); break; ... }
    printArray(copy);
}

統一輸出結果

25 26 38 38 43 45 61 77 128 128 153 444 1012 9999
(八種算法輸出完全一致,驗證正確性)

工程選型建議

  • 小規模/近乎有序 → 插入排序(適應性強、穩定)。
  • 通用高效 → 快速排序(原地、緩存友好、隨機化 pivot 避免最壞)。
  • 需穩定/外部排序 → 歸併排序。
  • 整數/定長鍵值、大數據 → 基數排序(線性時間、非比較)。
  • 嵌入式/極限內存 → 堆排序(O(1) 空間、保證 O(n log n))。

完整代碼可直接複製到項目作為算法工具包,或作為教學演示的標準參考實現。

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