c++ - 使用 C++ 对数字进行降序排序

标签 c++ sorting

我想做一个降序排序器。

我想问一下我的代码有什么问题。如果第三个变量 b3 具有最低值,为什么我的代码无法正常工作。

示例:b1 = 90, b2 = 60, b3 = 30 结果为 90, 30, 30

但是如果我输入另一个数字(只要第 3 个变量不是最低值),我的代码就可以正常工作。

示例:b1 = 30 , b2 = 90 , b3 = 60 结果为 90, 60, 30

示例:b1 = 30 , b2 = 60 , b3 = 90 结果为 90, 60, 30

#include <iostream>
using namespace std;

int main(){

    int b1,b2,b3,h1,h2,h3;

    cout<<"Masukkan Bilangan 1: ";
    cin>>b1;
    cout<<"Masukkan Bilangan 2: ";
    cin>>b2;
    cout<<"Masukkan Bilangan 3: ";
    cin>>b3;

    if(b1 >= b2 && b1 >= b3){
        h1 = b1;
    }else if(b2 >= b1 && b2 >= b3){
        h1 = b2;
    }else{
        h1 = b3;
    }

    if(b2 >= b1 && b1 >= b3){
        h2 = b1;
    }else if(b2 >= b1 && b2 <= b3 ){
        h2 = b2;
    }
    else{
        h2 = b3;
    }

    if(b1 <= b2 && b1 <= b3){
        h3 = b1;
    }else if(b2 <= b1 && b2 <= b3){
        h3 = b2;
    }
    else{
        h3 = b3;
    }

    cout<<h1<<", ";
    cout<<h2<<", ";
    cout<<h3;
    return 0;
}

最佳答案

设置h2的唯一代码至 b1是这段代码吗:

if(b2 >= b1 && b1 >= b3){
    h2 = b1;

但是h2应设置为 b1如果b1介于 b2 之间和 b3 .这可能有两种不同的方式,您只需测试其中一种。

例如,10 介于 5 和 30 之间。但是 10 也介于 30 和 5 之间!

尝试涵盖所有可能的情况并不是对两个以上数字进行排序的明智方法。使用合理的排序算法。

关于c++ - 使用 C++ 对数字进行降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46153392/

相关文章:

C++:从头开始实现归并排序

algorithm - 在 O(N) 时间和 O(1) 空间内分离数组的偶数和奇数位置

c++ - 将 "int"或 "bool"形式的标志传递给函数,在性能方面是否更好?

c++ - 将字符串转换为 IP 地址时输出错误

c++ - 内存调试策略

c++ - Do-While(false) block 与返回的效率

c++ - 无损原子添加?

java - 如何在Java中对多个列表进行排序

java - 字符串基数排序 - StringIndexOutOfBoundsEception

python - 如何使用 python 按特定顺序对文件名进行排序