分为n - 1轮, 每轮决定第k小(大)的数的位置;选择出来后与k位置进行交换。
#include
void selection_sort(int *arr, int sz)
{
for (int i = 0; i < sz; ++i ) {
int mpos = i;
for ( int j = i + 1; j < sz; ++j ) {
if (arr[j] < arr[mpos] ) {
mpos = j;
}
}
int tmp = arr[i];
arr[i] = arr[mpos];
arr[mpos] = tmp;
}
}
int main(int argc, char *argv[])
{
int arr[] = { 3,4,1,5,2};
size_t sz = sizeof(arr) / sizeof(arr[0]);
selection_sort(arr, sz);
for (int i = 0; i < sz; ++i )
printf( "%d ", arr[i] );
return 0;
}