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

xiaoxiao2021-02-28  37

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

            样例输入: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此时是最大的,所以这时排序就完成了。

 

转载请注明原文地址: https://www.6miu.com/read-2619228.html

最新回复(0)