void select_sort(int a[], int n) {
for (int i = 0; i < n; i++) {
int k = i;
for (int j = i + 1; j < n; j++) {
if (a[j] < a[k]) {
k = j;
}
}
swap(a[i], a[k]);
}
}
代码流程
#include<bits/stdc++.h>
using namespace std;
//选择排序:从无序区找一个最小值和无序区第一个元素置换
void select_sort(int a[], int n) {
for (int i = 0; i < n; i++) {
//a[0:i-1] is sorted
//find min_elem a[k] in a[i,n-1]
//swap(a[i],a[k])
int k = i;
for (int j = i + 1; j < n; j++) {
if (a[j] < a[k]) {
k = j;
}
}
swap(a[i], a[k]);
cout << "swap(a[" << i << "], a[" << k << "]):";
for (int j = 0; j < n; j++) {
cout << a[j] << " ";
}
cout << endl;
}
}
int main() {
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)cin >> a[i];
select_sort(a, n);
return 0;
}