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

Java 選擇排序演算法實作與原理深度解析

     編輯:Java 相關知識

選擇排序演算法簡介

選擇排序是一種簡單直觀的排序演算法,其核心思想是:每一趟從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序數據元素排完。

演算法運作流程

  1. 第一趟:在未排序序列中找到最小元素,與第一個位置交換
  2. 第二趟:在剩餘未排序序列中找到最小元素,與第二個位置交換
  3. 重複上述過程,直到第 n-1 趟完成,整個序列有序

Java 程式碼實作

public static void selectSort(int[] array) {
    for (int i = 0; i < array.length - 1; i++) {
        int min = i; // 假設當前位置為最小值索引
        
        // 在未排序區間尋找真正的最小值
        for (int j = i + 1; j < array.length; j++) {
            if (array[j] < array[min]) {
                min = j; // 更新最小值索引
            }
        }
        
        // 交換找到的最小值與當前位置
        Sort.swap(array, i, min);
    }
}

時間複雜度分析

情況時間複雜度說明
最好O(n²)無論輸入如何,都需執行完整比較
平均O(n²)固定比較次數
最壞O(n²)固定比較次數
空間複雜度O(1)原地排序,只需常數額外空間

特性總結

  • 不穩定排序:相同值元素相對位置可能改變
  • 原地排序:空間效率高
  • 交換次數少:最多 n-1 次交換,適合寫入操作昂貴的場景
  • 適合小規模數據:簡單易實作,但大數據量效能不佳

雖然選擇排序在實務大數據排序中較少使用,但其思想簡單、實作容易,是學習排序演算法的良好入門題目。

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