C语言选择排序
如,输入五个数,按从大到小排列。
#include<stdio.h>//选择排序
int main(){
int i=0,j=0;//循环变量
int a[5];//定义五个数的数组
int t=0; //三角交换中间变量
printf("输入5个数\n");
for(i=0;i<5;i++){
scanf("%d",&a[i]);//数据存入数组a中
}
for(i=0;i<4;i++){//只要循环到第4层
for(j=i;j<5;j++){//两层循环嵌套
if(a[j]>a[i]){//“>”,“<”控制排序
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
return 0;
}
就图解释:
外层循环是i,内层是j。
当i=0时,j从0到4,
一路过来遇到大的就赋给第一个,遇到大的就赋给第一个
就把最大的放在第一位
然后就i=1,j就从1到4,把剩下的最大的放最前面。
如此往复,在剩下最后一个就不用排列了,于是i=3就够了。