递归写法:
#include<bits/stdc++.h>
using namespace std;
void SelectSort(int a[], int n, int i) {
if (i != n - 1) {
int t = i;
for (int j = i + 1; j < n; j++) {
if (a[j] < a[t])
t = j;
}
if (t != i) {
swap(a[i], a[t]);
}
SelectSort(a, n, i + 1);
}
else
return;
}
int main() {
int n = 10;
int a[] = { 0,5,2,7,8,3,9,4,6,1 };
cout << "排序前序列:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
SelectSort(a, n, 0);
cout << "\n排序后序列:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
}
非递归写法:
#include<bits/stdc++.h>
using namespace std;
void SelectSort(int a[], int n) {
for (int i = 0; i < n - 1; i++) {
int t = i;
for (int j = i + 1; j < n; j++) {
if (a[j] < a[t])
t = j;
}
if (t != i) {
swap(a[i], a[t]);
}
}
}
int main() {
int n = 10;
int a[] = { 0,5,2,7,8,3,9,4,6,1 };
cout << "排序前序列:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
SelectSort(a, n);
cout << "\n排序后序列:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
}
简单记录一下