Cathy-Chen258 发表于 2020-11-28 22:50:17

四个数得出排序大小(头疼),网上搜的看不懂求解释

#include <stdio.h>
int main()
{
    int a, b, c, d, t;
    printf("请输入4个数:");
    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);
    return 0;
}

敲了一晚上有思路但运行都是错的,最终不得已去网上搜这段代码{:10_266:}
各位热心网友帮我看看我在网上搜的这段代码,我看不懂这思路,可以麻烦解释下吗(大概了解知道是通过将原来的值与相比的值互换,但整体了解有点卡壳){:10_269:}

sunrise085 发表于 2020-11-28 23:04:55

这个其实就是把冒泡排序法展开来写的。
冒泡排序法,就是通过循环,每次排除一个最小或者最大的,然后通过多次循环,完成排序
这个程序前三次if,选出最小的放在a的位置,然后两个if选出第二小的放在b的位置,然后一个if选出第三小的放在c的位置,d就是最大的了。

Cathy-Chen258 发表于 2020-11-28 23:10:47

sunrise085 发表于 2020-11-28 23:04
这个其实就是把冒泡排序法展开来写的。
冒泡排序法,就是通过循环,每次排除一个最小或者最大的,然后通过 ...

(⊙o⊙)我潜意识得把a当最大d当最小了,我刚刚听你这么一说假设了下还真如此,这种算法算是比较简单得排序吧?除了这种还会有更容易的吗?(我随便问问)

但是还是很感谢你的热心回答{:5_109:}

sunrise085 发表于 2020-11-28 23:15:16

Cathy-Chen258 发表于 2020-11-28 23:10
(⊙o⊙)我潜意识得把a当最大d当最小了,我刚刚听你这么一说假设了下还真如此,这种算法算是比较简单得排 ...

排序算法有很多种,冒泡是很容易理解的一种,除此之外还有快速排序、桶排序、计数排序、插入排序等鞥,你若想多学习一些,可以网上搜一下排序算法。
页: [1]
查看完整版本: 四个数得出排序大小(头疼),网上搜的看不懂求解释