#include<stdio.h> int main () { int i,j; int a[10]; int iTemp; int iPos; printf("为数组元素赋值:\n"); //通过键盘为数组赋值 for(i=0;i<10;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } //从小到大开始排序 核心程序 for(i=0;i<9;i++)//0 1 2 3 4 5 6 7 8 9次循环外循环 { iTemp=a[i]; iPos=i; for(j=i+1;j<10;j++)// j = 1 2 3 4 5 6 7 8 9 9次内循环 { if(a[j]<iTemp) { iTemp=a[j]; iPos=j; } } } //交换两个元素的值 a[iPos]=a[i]; a[i]=iTemp; //输出数组 for(i=0;i<10;i++) { printf("%d\t",a[i]); if(i==4) printf("\n"); } return 0 ; } 运算结果 这种排序方法遇到大的数字就有了问题 不过我也没看懂这种排序算法... root@dire:~/cprogram# ./x选择法排序.out 为数组元素赋值: a[0]=1123 a[1]=123 a[2]=123 a[3]=13 a[4]=12 a[5]=31 a[6]=23 a[7]=21 a[8]=3213 a[9]=12 1123 123 123 13 12 31 23 21 3213 12 root@dire:~/cprogram# ./x选择法排序.out 为数组元素赋值: a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 a[5]=6 a[6]=7 a[7]=8 a[8]=9 a[9]=0 1 2 3 4 5 6 7 8 9 0 root@dire:~/cprogram#