啊哈磊_编程从这里起步

标题: 四整数从小到大排序 [打印本页]

作者: sycamore1990    时间: 2013-2-11 15:59
标题: 四整数从小到大排序
从键盘读入四个整数,按从小到大排序输出。
我写的是这样,不知对不,运行试的话是可以,可总觉得很繁复。
#include <stdio.h>
int main()
{
    int a,b,c,d,t;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    if(a>c)
    {
        t=a;
        a=c;
        c=t;
    }
    if(a>d)
    {
        t=a;
        a=d;
        d=t;
    }
    if(b>c)
    {
        t=b;
        b=c;
        c=t;
    }
    if(b>d)
    {
        t=b;
        b=d;
        d=t;
    }
    if(c>d)
    {
        t=c;
        c=d;
        d=t;
    }
    printf("%d %d %d %d",a,b,c,d);
    sleep(5000);
    return 0;
}



作者: 李掌柜    时间: 2013-2-11 16:43
神人啊,可以这样的,优化下更好
作者: sycamore1990    时间: 2013-2-11 18:25
其他的还没学,以我目前的能力加智商,只能这样了,呵呵,见笑了。。。
作者: sycamore1990    时间: 2013-2-11 18:26
月光疾风 发表于 2013-2-11 16:43
神人啊,可以这样的,优化下更好

优化下吧。。嘿嘿。。。
作者: 李掌柜    时间: 2013-2-11 18:42
sycamore1990 发表于 2013-2-11 18:26
优化下吧。。嘿嘿。。。

其实程序不在于他的算法,而在于它是否真的有用,能不能帮我们解决问题
作者: qswaqswaqw    时间: 2013-2-14 23:54
貌似这样蛮好 试了试2 2比较跟你这个步骤一样多
作者: sycamore1990    时间: 2013-2-15 00:14
qswaqswaqw 发表于 2013-2-14 23:54
貌似这样蛮好 试了试2 2比较跟你这个步骤一样多

嗯嗯 好的 谢谢啦
作者: 2549183965    时间: 2013-2-17 12:15
好长的代码
作者: sycamore1990    时间: 2013-2-17 12:19
2549183965 发表于 2013-2-17 12:15
好长的代码

是哦,嘿嘿。。。。。
作者: zuiyouji1    时间: 2013-2-20 15:06
我看过一个冒泡法。

不过目前我还看不懂。。

看原理,冒泡法做这个就很不错
作者: 4k-Rn    时间: 2013-3-3 19:48
可以用多维数组
作者: 4k-Rn    时间: 2013-3-3 19:48
啊哈
。。。。。。。。。。。。。。。。。。
作者: 1991jiangjun1    时间: 2014-7-23 11:45
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b,c,d,t;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    if(a>b) {t=a;a=b;b=t;}
    if(a>c) {t=a;a=c;c=t;}
    if(a>d) {t=a;a=d;d=t;}
    if(b>c) {t=b;b=c;c=t;}
    if(b>d) {t=b;b=d;d=t;}
    if(c>d) {t=c;c=d;d=t;}
    printf("%d %d %d %d",a,b,c,d);
        system("pause");
        return 0;
}[/mw_shl_code]

作者: 利威尔·阿克曼    时间: 2014-7-27 11:08
建议用排序算法
这种代码不具扩展性,而且效率低
作者: Windowsredstone    时间: 2017-8-18 21:58
本帖最后由 Windowsredstone 于 2017-8-18 22:00 编辑

冒泡排序法

[mw_shl_code=c,true]#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
        int a[4];
        int i;
        for(i=0; i<4; i++)
                scanf("%d",&a);
        int j,t;
        for(i=0; i<4; i++)
                for(j=0; j<3; j++)
                        if(a[j]>a[j+1])
                        {
                                t=a[j];
                                a[j]=a[j+1];
                                a[j+1]=t;
                        }
        for(i=0; i<4; i++)
                printf("%d ",a);
        printf("\n");
        system("pause");
        return 0;
}[/mw_shl_code]





欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2