#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10]={4,12,13,4,3,42,33,1,43,44}; //定义一个有10个元素的数组
int i,j,min,pos_min;
int t;
min=a[0];pos_min=0; //假设数组中第一个元素最小
for(j=0;j<9;j++) //外循环,比较多少轮
{
_____①______; //第 j 轮开始时,假设最前面的数a[j]最小
pos_min=___②___;
for(________③_________) //内循环,从第j+1个开始,依次进行比较
{
if(_______④________) //如果发现更小的数,则对min及pos_min更新
{
min=a[i];
_______⑤________;
}
}
//循环后,最小的数所在的位置为pos_min,交换a[j]与a[pos_min]的值,使得a[j]成为最小的数
t=a[j];a[j]=a[pos_min];a[pos_min]=t;
}
for(i=0;i<10;i++) //输出数组中的排序后的10个元素
printf("%2d ",a[i]);
return 0;
}
供参考:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10] = { 4,12,13,4,3,42,33,1,43,44 }; //定义一个有10个元素的数组
int i, j, min, pos_min;
int t;
min = a[0]; pos_min = 0; //假设数组中第一个元素最小
for (j = 0; j < 9; j++) //外循环,比较多少轮
{
min = a[j]; //_____①______; //第 j 轮开始时,假设最前面的数a[j]最小
pos_min = j; //___②___;
for (i = j + 1; i < 10;i++) //(________③_________) //内循环,从第j+1个开始,依次进行比较
{
if (min < a[i]) //(_______④________) //如果发现更小的数,则对min及pos_min更新
{
min = a[i];
pos_min = i; //_______⑤________;
}
}
//循环后,最小的数所在的位置为pos_min,交换a[j]与a[pos_min]的值,使得a[j]成为最小的数
t = a[j]; a[j] = a[pos_min]; a[pos_min] = t;
}
for (i = 0; i < 10; i++) //输出数组中的排序后的10个元素
printf("%2d ", a[i]);
return 0;
}