#include <stdio.h>
void SelectionSort(int a[], int size);
int main(void)
{
int arr[] = {1, -3, 5, 0, 9 ,6, 4};
SelectionSort(arr, sizeof(arr)/sizeof(arr[0]));
unsigned int i;
for (i=0; i<sizeof(arr)/sizeof(arr[0]); i++){
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void SelectionSort(int a[], int size)
{
int i, j;
// 每次循环后将第 i 小的元素放好
for (i=0; i<size-1; i++){
int min_idx = i;
// 用来记录从第 i 个到第 size-1 个元素中,最小的那个元素的下标
for (j=i+1; j<size; j++){
if (a[j] < a[min_idx]){
min_idx = j;
}
}
// 将第 i 小的元素放在第 i 个位置上,并将原来占着第 i 个位置的元素挪到后面
int tmp = a[i];
a[i] = a[min_idx];
a[min_idx] = tmp;
}
}
排序后结果: