仅用if条件实现5个输入数字升序排序的技术求助
仅用if条件实现5个数字的升序排序
你用嵌套if实现3个数排序的思路没问题,但5个数如果直接枚举所有排列(共120种)会非常繁琐。换个更高效的思路:通过多轮两两比较交换,用if逐步把最小的数移到对应位置,全程只用if条件就能完成排序。
以下是实现代码:
# 输入5个数字 a = float(input("Enter a: ")) b = float(input("Enter b: ")) c = float(input("Enter c: ")) d = float(input("Enter d: ")) e = float(input("Enter e: ")) # 确保a是所有数里最小的 if a > b: a, b = b, a if a > c: a, c = c, a if a > d: a, d = d, a if a > e: a, e = e, a # 确保b是剩余四个数里最小的 if b > c: b, c = c, b if b > d: b, d = d, b if b > e: b, e = e, b # 确保c是剩余三个数里最小的 if c > d: c, d = d, c if c > e: c, e = e, c # 确保d是剩余两个数里最小的 if d > e: d, e = e, d # 输出升序结果 print(f"{a} < {b} < {c} < {d} < {e}")
逻辑说明
- 第一轮通过和b、c、d、e逐一比较交换,把最小的数放到a的位置;
- 第二轮在剩余的b、c、d、e里重复操作,把次小的数放到b的位置;
- 以此类推,每一轮都用if判断并交换,最终所有数就按升序排列好了。
这种方式比枚举所有排列简洁得多,而且完全符合“仅用if条件”的要求。
内容的提问来源于stack exchange,提问作者Harsh Panchal
相关产品推荐
相关产品推荐

