三整数排序问题的两种解法

题目:输入三个整数,从小到大排序后输出。

            样例输入:20 7 33

            样例输出:7 20 33

分析:

   解决这道题的方法有很多种,这里主要阐述两种方法,其一:

#include <stdio.h>

int main()
{
    int a,b,c,t;
    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",a,b,c);
    return 0;

}

先比较a和b的大小,此时必有a小于等于b,再比较a和c的大小,此时必有a小于等于c,此时a是这三个数中最小的,反观b和c,此时这两个数的大小是不确定的,那么最后一步就应该比较b和c的大小,此时必有b小于等于c,前面又有a小于等于b,所以有a小于等于c,那么这时排序就完成了。

其二:

#include <stdio.h>
int main()
{
    int a,b,c,t;
    scanf("%d%d%d",&a,&b,&c);
    if(a > b){
        t = a;a = b;b = t;
    }
    if(b > c){
        t = b;b = c;c = t;
    }
    if(a > b){
        t = a;a = b;b = t;
    }
    printf("%d %d %d",a,b,c);
    return 0;

}

先比较a和b的大小,此时必有a小于等于b,再比较b和c的大小,此时必有b小于等于c,此时c是这三个数中最大的,反观a和b,此时这两个数的大小是不确定的,那么最后一步就应该比较a和b的大小,此时必有a小于等于b,又因为c此时是最大的,所以这时排序就完成了。


猜你喜欢

转载自blog.csdn.net/m0_37954722/article/details/80951499
今日推荐