思想
从当前待排元素中选择出最小的一个,如果序号和当前待排元素的下标一致,则直接进入下一轮选择,否则与待排部分第一个元素进行交换,共进行n-1趟。
#include <iostream>
using namespace std;
void SelectSort(int *a,int n) {
for (int i = 0; i < n-1; ++i) { //n-1趟排序
int index = i;
for (int j = i + 1; j < n-1; ++j) { //找到a[index]应插入的位置
if (a[j] < a[index])
index = j;
}
if (i != index) {//交换元素
int temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
}
int main() {
int a[] = {0, 5, -1, 3, 2, 4, 9, 8, 7, 6};
SelectSort(a,10);
for (int i = 0; i < 10; ++i) {
cout << a[i] << " ";
}
return 0;
}