回 帖 发 新 帖 刷新版面

主题:最原始的排序,对于以后学习其他排序和数组中的排序都有帮助..

饮水不忘思源,在论坛上,朋友们帮我解决了不少问题.我把自己在学习中的一点经验和大家分享.

问题:输入4个不等数字(下例中我定义为整型),按从大到小排列.

main()
    {int a,b,c,d,max;
     scanf("%d,%d,%d,%d",&a,&b,&c,&d);
     if(b>a&&b>c&&b>d)
       {max=a;
        a=b;
        b=max;
       }
     if(c>a&&c>b&&c>d)
       {max=a;
        a=c;
        c=max;
       }
     if(d>a&&d>b&&d>c)
       {max=a;
        a=d;
        d=max;
       }
     if(c>b&&c>d)
       {max=b;
        b=c;
        c=max;
       }
     if(d>b&&d>c)
       {max=b;
        b=d;
        d=max;
       }
     if(d>c)
       {max=c;
        c=d;
        d=max;
       }
     printf("%d>%d>%d>%d ",a,b,c,d);
    }
我介绍一下整体思路,其中的max介绍的只不过是一个中间存储量,我们需要做的就是,叫a中存储的数据最大,b中的次大,c中的再次大,d中的数据最小.
初学者在排序问题上,我认为最大的困难就是思想,我们所定义的变量一定要把他看作是一个可变的,可以重复赋值的中间过程,而不能看成是一个具体的数字.
在以后的排序中用到的也是这种思路,数组中的立体排序也是这样,不过就是复杂了一点,不过思路有了,别的就是小问题了.

回复列表 (共3个回复)

沙发

我的天,如果是100个数要求排序,你怎么办?
随便告诉一声,你的排序方法叫选择法。

板凳

老兄,对新手你还想要求什麽呀,我有对C的热情,就是最大财富了.
不过别的排序我也会,用数组冒泡呀,我提到过了.

3 楼

对了,如果保持我现在对于C的热情.
那麽老兄,我想你向我拜师,不会太遥远的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册