对于给定的一组数字,要求采用选择排序方法,对于数字排从小大到大顺序排序。
选择排序原理如下图所示:
源代码如下:
#include
#define N 5
void selection(int [], int );
int main()
{
int num[] = {8,2,7,5,4};
int i;
printf("排序前:");
for (i = 0; i < N; i++)
printf("%4d", num[i]);
selection(num, N);
printf("\n排序后:");
for (i = 0; i < N; i++)
printf("%4d", num[i]);
return 0;
}
void selection(int a[], int n)
{
int i, j, min_j, t;
for (i = 0; i < n-1; i++)
{
min_j = i; // 将a[i]视作最小值
for (j = i+1; j < n; j++)
{
if (a[j] < a[min_j])
min_j = j; // 记录当前最小值的下标
}
if (i != min_j) // 如果最小值的位置不是当前位置,则交换
{
t = a[i]; a[i] = a[min_j]; a[min_j] = t;
}
}
return ;
}