#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;
}
ALDS1_2_B:SelectionSort
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.