ALDS1_2_B:SelectionSort

題目地址

#include<iostream>

using namespace std;
/*
 * 選擇排序思路:
 * 1. 進行n-1次循環,執行2、3、4操作
 * 2. 設置變量i標記已排序位置的末尾後一位
 * 3. 設置pos變量標記未排序中最小(大)數的位置
 * 4. 將i位置的值與pos位置的值進行交換
 * */

int selectionSort(int a[], int n){
    int count = 0;
    for (int i = 0; i < n-1; i++){
        int pos = i;
        for (int j = i; j < n; j++){
            if (a[j] < a[pos]){
                pos = j;
            }
        }
        swap(a[pos], a[i]);
        if (a[pos] != a[i]){
            count++;
        }
    }
    return count;
}

int main(){
    int n, a[100];
    cin>>n;
    for (int i = 0; i < n; i++){
        cin>>a[i];
    }
    int count = selectionSort(a, n);
    for (int i = 0; i < n; i++){
        if (i != n-1){
            cout<<a[i]<<" ";
        }else{
            cout<<a[i]<<endl;
        }
    }
    cout<<count<<endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章