鱼C论坛

 找回密码
 立即注册
查看: 1054|回复: 3

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

[复制链接]
发表于 2020-11-28 22:50:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}

敲了一晚上有思路但运行都是错的,最终不得已去网上搜这段代码
各位热心网友帮我看看我在网上搜的这段代码,我看不懂这思路,可以麻烦解释下吗(大概了解知道是通过将原来的值与相比的值互换,但整体了解有点卡壳)
最佳答案
2020-11-28 23:04:55
这个其实就是把冒泡排序法展开来写的。
冒泡排序法,就是通过循环,每次排除一个最小或者最大的,然后通过多次循环,完成排序
这个程序前三次if,选出最小的放在a的位置,然后两个if选出第二小的放在b的位置,然后一个if选出第三小的放在c的位置,d就是最大的了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-28 23:04:55 | 显示全部楼层    本楼为最佳答案   
这个其实就是把冒泡排序法展开来写的。
冒泡排序法,就是通过循环,每次排除一个最小或者最大的,然后通过多次循环,完成排序
这个程序前三次if,选出最小的放在a的位置,然后两个if选出第二小的放在b的位置,然后一个if选出第三小的放在c的位置,d就是最大的了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

但是还是很感谢你的热心回答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

排序算法有很多种,冒泡是很容易理解的一种,除此之外还有快速排序、桶排序、计数排序、插入排序等鞥,你若想多学习一些,可以网上搜一下排序算法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表