一趟简单选择排序的操作:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≥i≥n)个记录交换。
简单选择排序
void selectSort(int* array, int length) {
int i, j, min;
for (i = 0; i < length-1; i++) {
min = i; //记录最小值的位置
for (j = i + 1; j < length; j++) { //遍历寻找最小值
if (array[j] < array[min])
min = j;
}
if (min != i) { //开始位置不是最小值,与最小值交换
int tmp = array[min];
array[min] = array[i];
array[i] = tmp;
}
}
}
测试
#include <iostream>
using namespace std;
int main() {
int a[] = { 5,4,9,8,7,6,0,3,1,2 };
int len = sizeof(a) / sizeof(a[0]);
selectSort(a,len);
for (int i = 0; i < len; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}