选择排序,是把未排序的所有元素里的最小值,放在未排序范围的最左边。直至未排序范围未空。至此实现数组的关键字的递增排列。
#include<iostream>
using namespace std;
void swap(int & i , int & j) {
int temp;
temp = i;
i = j;
j = temp;
}
void selectSort(int a[],int length,int & compare,int & move) {
int indexMin;
compare = move = 0;
for (int i = 0; i < length - 1; i++) {
indexMin = i;
for (int j = i + 1; j < length ; j++) {
compare++;
if (a[indexMin] > a[j])
indexMin = j;
}
if (indexMin != i) {
move++;
swap(a[indexMin],a[i]);
}
}
for (int i = 0; i < length; i++)
cout << a[i] << ' ';
cout << endl << "compare times : " << compare << " ,move times : " << move << endl;
}
int main() {
int a[] = { 1,0,2,3,4,5,6,7,8,9 }, length = 10;
int compare, move;
selectSort(a,length,compare,move);
cout << endl;
return 0;
}
测试结果如下: