注册 登录
编程论坛 C语言论坛

三个数的冒泡排序!

潇湘夜雨001 发布于 2017-07-25 01:40, 2491 次点击
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
int main()
{
    int a,b,c,temp;
    scanf("%d%d%d",&a,&b,&c);//scanf加不加空格,没关系,默认是以空格分隔开数
    //实现将a,b,c从小到大进行排列
    //前两个if将最大的数字挪到了最后面,c
    if(a>b)
    {
        temp = a;
        a = b;
        b = temp;
    }
    if(b>c)
    {
        temp = b;
        b = c;
        c = temp;
    }
    if(a>b)
    {
        temp = a;
        a = b;
        b = temp;   
    }
    //也许你会问,怎么a>b写了两次,前两个if实现了相当于最重
    //的球沉到最底下,然后开始比较前两个数。
    printf("a=%d,b=%d,c=%d",a,b,c);
    system("pause");
    /*getchar();*/
    return 0;
}
5 回复
#2
wp2319572017-07-25 14:25
你这是提问呢  还是教学呢  没看明白
#3
GBH12017-07-26 09:33
这么多if语句,写一个函数不是更好看么
void max(void* a,void* b);

int max_num = a>b? a:b;
#4
CreatorGreen2017-07-26 19:51

楼上正解
#5
m159629772752017-07-31 16:51
冒泡排序for循环不是更加简单吗

for(int i=0;i<2;i++)
 for(int j=0;j<2-i;j++)
{
   if(a[j]>a[j+1])
   {
      t=a[j];
      a[j]=a[j+1];
      a[j+1]=t;
   }
}
#6
潇湘夜雨0012017-08-01 00:31
回复 2楼 wp231957
看着似乎更简洁,但是逻辑似乎没if ……else 清晰!
1