//要求任意输入10个数,然后按从小到大顺序输出
#include
int main()
{
int a[10];
int i,j;
int temp;
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列后顺序为:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
用数组来存放十个数字,使用“冒泡排序”来实现排序。10个数字需进行9轮扫描,每次扫描时比较相邻的二个数,如它们不符合要求的大小关系,就交换它们的位置。第一轮扫描结束时,最大的数就“沉”到最后。于是第二的范围就少了一个数。再进行第二两栖型、第三轮,…——直到第9轮就完成了。最后输出结果。
#include
int main()
{
int a[10],i,j,t;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
t=a[j]; a[j]=a[j+1]; a[j+1]=t;
}
printf("排序以后的数:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
system("pause");
return 0;
}
如果要从大到小排,只要把上面的交换条件
if(a[j]>a[j+1])换为
菜鸟到什么程度啊?如果学过循环之后还行,没学循环的话应该没法做10个数的太麻烦了。比如3个数从大到小排序
main()
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a if(a
}
就是一个一个数比较
如果学了循环和数组的话我只会3种:选择法,顺序法,冒泡法。(从小到大)
顺序法(好像叫这个)
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
{k=a[i];
a[i]=a[j];
a[j]=k;
} 原理是用第一个数和后面的比如果比第一个小,他俩就交换值,继续比较如果还有比交换后的第一个数更小的继续交换值一次一直比到最后一个数,这是第一个数是10个数中最小的数,然后从第2个数开始比较同理第2个数是剩下的9个数中最小的数,以此类推从小到大排序。
选择法(和上面的差不多,只不过执行的步骤少点,如果大量的数做比较,比上面的节省时间)
for(i=0;i<10;i++)
{t=i;
for(j=i;j<10;j++)
if(a[t]>a[j]) t=j;
if(t!=i)或if(t==j)
{j=a[i];
a[i]=a[t];
a[t]=j;
}
冒泡发(我觉得这个方法不好!有不同观点可以无视这句话!)
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
原理是相邻的2个数比较,把大的数放后面,一次比较,循环一次就把最大的放到最后一位上了,然后在循环一次把第二大的放到倒数第二位,一次……
不明白发信息哈!如果没学循环可能觉得比较麻烦,学完就觉得简单了,不着急!!!
//用一维数组来排序,3个以上的数
#include
#include
main()
{
int a[10];
int i,j,temp;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<=9;i++)
for(j=i;j<=9;j++)
if(a[i]>a[j])//从小到大这样排。要从大到小,换成a[i] {
temp=a[i];//这三行是经典。又叫冒泡法。请注意
a[i]=a[i+1];
a[i+1]=temp;
}
for(i=0;i<=9;i++)
printf("%d\t",a[i]);
system("pause");}
冒泡法
1楼的那个所谓经典三行,应该是两个变量的值的交换吧```
真正的冒泡法就是他写的中间那一块.
理解起来很简单:
有n个数,从第n个数开始和前面的数比较n-1次,如果比前面的数大,就交换位置,否则位置不变.然后这样比较n-1次,顺序就出来了.
和一楼的兄弟潜水去游泳,然后在水底吐泡泡一个道理...
加油哟`~