排序过程:
(1) 首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上。
(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换—第二趟选择排序。
(3) 重复上述过程,共经过n-1趟排序后,排序结束。
分解讲解:
初始【38 21 54 22 29 13 78 95 46】
i j
min
第一轮 13【21 54 22 29 38 78 95 46】
代码如下:
#include <stdio.h>
int main()
{
int a[9];
int i, j, min, temp;
for (i = 0; i <= 8; i++)
scanf("%d",&a[i]);
for (i = 0; i <= 8; i++)
printf("%d,", a[i]);
for (i = 0; i <= 7; i++)
{
min = i;
for (j = i + 1; j <= 8; j++)
{
if (a[j] < a[min]) min = j;
}
temp = a[i]; a[i] = a[min]; a[min] = temp;
}
printf("\n最终结果:\n");
for (i = 0; i <= 8; i++)
printf("%d,", a[i]);
}
运行结果: