C语言排列数字大小

排列出四个数字的大小
(145, -367, 12,250)

排序数组可以使用冒泡算法:如果前一个数据比后一个大,则交换。

#include <stdio.h>
// ä½¿ç”¨å†’泡算法升序数组src
void sort(int *src, int len)
{
    int tem;
    for (int i = 0; i < len; i++)
    {
        for (int j = 0; j < len - i - 1; j++) // æ¯å¾ªçŽ¯ä¸€æ¬¡ï¼Œåˆ™å°‘一次
            if (src[j] > src[j+1])  // å¦‚果前一个数据比后一个大,则交换
            {
                tem = src[j];
                src[j] = src[j+1];
                src[j+1] = tem;
            }
    }
}

int main()
{
    int a[10] = {2, 5, 9, 6, 4, 7, 8, 1, 0, 3};
    sort(a, 10);  // æŽ’序
    for (int i = 0; i < 10; i++) // è¾“出结果
        printf("%d ", a[i]);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-25
此问题是典型的排序问题,有好多解决办法,其中一种是冒泡排序法。

具体思路是:

在水中,气泡密度小,故要上浮。在此题中,把最小的数比作是气泡,在排序过程中要“上浮”。

具体请参见参考资料中的方法,有各种语言实现的。

建议:学习一下数据结构。

参考资料:http://baike.baidu.com/view/254413.htm?fr=ala0_1_1

第2个回答  2010-03-25
main ( )
{ int a[5];
int i,j,t;
printf (“input 4 unmbers:\n”);
for(i=1;i<5;i++)
scanf (“%d ” ,&a[i]);
for(j=1; j<=3; j++)
for ( i=j+1; i<=4; i++)
if (a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
printf( “the sorted numbers:\n”);
for( i=1;i<5;i++)
printf(“%d”,a[i]);
c语言中常常数组的第一个元素a[0]不用,为了和实际情况符合,一般我们数数都是从第一个开始,并非是第0个;
第3个回答  2010-03-25
main ( )
{ int a[5];
int i,j,t;
printf (“input 4 unmbers:\n”);
for(i=1;i<11;i++)
scanf (“%d ” ,&a[i]);
printf (“\n”);
for(j=1; j<=4; j++)
for ( i=j; i<=4-j; i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf( “the sorted numbers:\n”);
for( i=1;i<5;i++)
printf(“%d”,a[i]);
}本回答被提问者采纳

c语言怎么输出从小到大的数字?
intmain(){ inta,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("从小到大的顺序是:%d %d %d\\n",a,b,c);return0;} ...

如何用c语言实现按整数大小排序?
4.定义一个自定义函数,比较整数序列中任意两个数字的序数大小。5.在主函数中,首先定义两个整数,并保存整数个数和排名计数。6.使用for循环输入序列中的整数,并设置序列中每个整数的序列号。7.按整数大小排序的序列中的所有数值。8.将好排序数值添加排序编号。9.最后,根据索引输出所有整数的排序...

如何用c语言实现输入一些数字,按照从大到小排序输出?
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:include<stdio.h> int main(){ int i,j,a[10],t;printf("输入数");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j...

求C语言将数组元素大小排序!!
10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7、1进行冒泡,将当前最大的9放在倒数第二的位置,以此类推。以下是具体代码:include <stdio.h> int main(){ int nums[10] = {10, 2, 3...

C语言排列数字大小
src[j+1] = tem; } }}int main(){ int a[10] = {2, 5, 9, 6, 4, 7, 8, 1, 0, 3}; sort(a, 10); \/\/ 排序 for (int i = 0; i < 10; i++) \/\/ 输出结果 printf("%d ", a[i]); return 0;...

C语言问题,输入数字按从小到大排列(快)
int a[11]={2,6,7,9,13,16,19,21,25,29};(虽然数组中只有10个元素)scanf("%d",&m);for(i=0;i<10;i++)if(m=i;j--)a[j+1]=a[j];break;} a[i]=m;for(i=0;i<11;i++)printf("%d\\t",a[i]);} 2.选择排序 main(){ int a[10];int i,j,t;for ( i = ...

C语言~十个数字从小到大怎么排列~从大到小呢~
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++...

c语言的两种排序?
int main(int argc,const char*argv[]){ int num[10],i,j,k,l,temp;\/\/用一个数组保存输入的数据 for(i=0;i<=9;i++){ scanf("%d",&num);} \/\/用两个for嵌套循环来进行数据大小比较进行排序 for(j=0;j<9;j++){ for(k=j+1;k<=9;k++){ if(num[j]<num[k])\/\/num[j]...

c语言,输入三个不同的数字,按从从大到小输出
1、参考2楼,修改两个语法错误:scanf("%d,%d,d%",&x,&y,&z);应该是:scanf("%d,%d,%d",&x,&y,&z);输出语句:printf("输入的三个数字由大到小排列为:%d,%d,%d",z,y,x);2、算法太乱,应该先对x,y,z排序,排序的算法是两两相比较,如果前者大就交换,最后得到x,y,z是从小到...

C语言题目:键盘随机输入5个数,请从大到小排列输出,并输出其中所有的素数...
define N 5 \/\/定义要排序的个数N为5个 main() \/\/主程序开始 { int a[N],i,j,temp; \/\/定义数组a,变量i,j和中间存储变量temp printf("please input %d numbers\\n",N); \/\/输出文本,"请输入N个数字(此处N=5)"for(i=0;i<N;i++) \/\/循环语句,利用i循环将N个数存入...

相似回答