← 回首頁

選擇排序法 Selection Sort

每一輪會從未排序區間找出最小值,並與前端位置交換。可切換自動播放或分解模式學習。

(5-50個)
中速
未排序
已排序
本輪固定位置 i
目前最小值 min
掃描位置 j
交換位置

C++ 選擇排序法參考程式

這段程式碼示範 Selection Sort 的核心概念:每一輪先找最小值,再放到前面正確位置。

C++
#include <iostream>
#include <vector>
using namespace std;

void selectionSort(vector<int>& arr) {
    int n = static_cast<int>(arr.size());

    for (int i = 0; i < n - 1; ++i) {
        int minIdx = i;

        for (int j = i + 1; j < n; ++j) {
            if (arr[j] < arr[minIdx]) {
                minIdx = j;
            }
        }

        if (minIdx != i) {
            swap(arr[i], arr[minIdx]);
        }
    }
}

int main() {
    vector<int> data = {64, 25, 12, 22, 11};

    selectionSort(data);

    cout << "排序結果: ";
    for (int x : data) {
        cout << x << " ";
    }
    cout << endl;

    return 0;
}