/*选择法排序*/
#include<stdlo.h>
#define MAXN 10
/*定义符号常量MAXN*/
int main(vold)
{
int i,index,k,n,temp;
int a[MAXN];
printf("Enter n:"); /提示输入n个数*/
scanf("%d",&n);
printf("Enter %d integers:",n);
for(i=0;i<n;i++){
scanf("%d”,&a[i]); /*将输入的数依次存进数组*/
}
/*对n个数排序*/
for(k=0;k<n-1;k++){
index=k;
}
for(i=k+1;i<n;i++){
if(a[i]<a[index]){
index=i;
}
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
/*输出n个数组元素的值*/
printf("After sorted:");
for(i=0;i<n;i++){
printf("%d",a[i]);
}
printf("\n");
return 0;
}
运行结果
Enter n:5
Enter 5 integers:3 5 2 8 1
After sorted:1 2 3 5 8
关键部分:
for(i=k+1;i<n;i++){ /*从k+1开始遍历数组*/
if(a[i]<a[index]){
index=i;
}
}
/*上一部分通过for循环找到最小数所在的数组下标,并赋值给index*/
temp=a[index];
a[index]=a[k];
a[k]=temp;
/*上述的三个表达式将最小值所在的下标和k进行了换值*/
}/*注意这个大括号是上一个循环的,它保证了k是从0走到n-1的,与i从1走到n-1相结合*/
运行模式:
a[0]-a[n-1],最小值与a[0]交换,
a[1]-a[n-1], 最小值与a[1]交换
依次到最后,然后输出整个数组。