加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 是否有更有效的方法对两个数字进行排序?

发布时间:2020-12-16 10:17:53 所属栏目:百科 来源:网络整理
导读:我希望dLower和dHigher分别具有两个双值的较低和较高值 – 即如果它们是错误的方式则对它们进行排序.最直接的答案,似乎是: void ascending(double dFirst,double dSecond){ if(dFirst dSecond) swap(dFirst,dSecond);}ascending(dFoo,dBar); 但这似乎是一件
我希望dLower和dHigher分别具有两个双值的较低和较高值 – 即如果它们是错误的方式则对它们进行排序.最直接的答案,似乎是:

void ascending(double& dFirst,double& dSecond)
{
    if(dFirst > dSecond)
        swap(dFirst,dSecond);
}

ascending(dFoo,dBar);

但这似乎是一件显而易见的事情,我想知道我是不是在使用正确的术语来找到标准例程.

另外,你会怎么做那个通用的?

解决方法

这是接近它的好方法.它会像你要的那样高效.我怀疑这个特定功能有一个公认的名称.这显然被称为比较互换.

在类型上推广它就像:

template <typename T>
void ascending(T& dFirst,T& dSecond)
{
    if (dFirst > dSecond)
        std::swap(dFirst,dSecond);
}

证实这个功能:

int main() {
    int a=10,b=5;
    ascending(a,b);
    std::cout << a << "," << b << std::endl;

    double c=7.2,d=3.1;
    ascending(c,d);
    std::cout << c << "," << d << std::endl;

    return 0;
}

这打印:

5,10
3.1,7.2

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读