同样是要理清选择排序方法的精髓:
第一步总是你在屏幕上输入几个数,再拿第一个数1去和第二个、第三个、第四个...数去比较,直到遇到了所有数中最小的那一个,与第一个数交换位置。
第二轮再用第二个数去一个一个比较...
如此循环,便能得到一个数字按从小到大排序的数组。
#include<stdio.h>
int main()
{
int i,j,a[10],temp;
printf("请输入10个正整数:\n");
for(j=0;j<10;j++)
{
scanf("%d",&a[j]);
}
printf("\n");//用一个for循环来实现本数组的输入
for(i=0;i<9;i++)//外循环,可以理解为每一次拿出来作比较的前一个数的个数,就是9个数
{
for(j=i+1;j<10;j++)//内循环,可以理解为拿出来和外循环里讲的前一个数作比较的数;因为这一定是从第二个数开始,所以j=i+1,同样也是有9个数
{
if(a[i]>a[j])//这里就是比较的内容,如果发现了外循环里表示的数比内循环里表示的数要大,那么两两交换位置
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("排序后的数组为:\n");
for(j=0;j<10;j++)
{
printf("%4d",a[j]);
}//也是通过一个循环把排序后的结果输出到控制台上
return 0;
}
最关键的是要理解两重循环的那个部分~