知识点:1、思想:将第一个数作为最小的数,再依次比较,若有更小数,与之对换,以此,可找出最小的数。
2、利用for语句,找到第二小的,放在第二个位置,以此类推,可从小到大排序。
步骤:
1、让第一个数为最小值
for(i=0;i<10;i++)
k=i;//此时k接收了i的值,认定k为最小值,往下比较
2、让第一个和其他数比较
for(j=i+1;j<10;j++)
if(a[k]>a[j])//如果k位置的值大于位置的值,交换
k=j;//确保k改变后依旧是最小值
注意:当a[k]>a[j]改成a[k]<a[j],这道题即可改成由大到小排序
3、找到最小值,并储存到数组中
if(k!=i)
{
a[k]=a[i];
t=a[k];
a[i]=t;
}
4、输出数组
for(i=0;i<10;i++)//别忘了这个循环,否则a[i]只能输出一个值
printf("%d",a[i]);
下列是关键步骤:
for(i=0;i<10;i++)
{ k=i;
for(j=i+1;j<10;j++)//j为i后一个数,用来比较前后大小
if(a[k]>a[j])
k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;i<10;i++)
printf("%d",a[i]);
整体代码:
#include<stdio.h>
void main()
{
int i,j,k,t,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;i<10;i++)
printf("%2d",a[i]);//2用来间隔数字
}
文章出处登录后可见!
已经登录?立即刷新