点击查看代码
#include<iostream>
using namespace std;
//简单选择排序(升序排序)
void SelectSort(int a[], int n) {
//i是有序区末尾位置(在升序排序中,a[i]是有序区的最大元素),j是无序区起始位置,min是最小元素的位置
int i, j, min;
//每轮将无序区最小的元素移动至有序区末尾
for (i = 0; i < n; i++) {
min = i; //每轮扫描开始时,以有序区中最大元素a[i]作为比较基准
for (j = i + 1; j < n; j++) { //无序区扫描范围[i+1,n-1]
if (a[min] > a[j]) { //找出无序区中最小元素的位置
min = j;
}
}
if (min != i) { //若无序区中有最小元素存在(min不等于i),则互换a[min]和a[i]
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
int main() {
int a[] = { 80,30,60,40,20,10,50,70 };
int n = (sizeof(a)) / (sizeof(a[0]));
cout << "序列个数:" << n << endl;
cout << "排序前:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
SelectSort(a, n); //简单选择排序
cout << "排序后:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}