我希望 dLower
和 dHigher
分别具有两个 double 值中的较低值和较高值 - 即,如果它们是错误的方式,则对它们进行排序。最直接的答案似乎是:
void ascending(double& dFirst, double& dSecond)
{
if(dFirst > dSecond)
swap(dFirst,dSecond);
}
ascending(dFoo, dBar);
但这似乎是一件显而易见的事情,我想知道我是否没有使用正确的术语来找到标准例程。
此外,您将如何使它通用?
最佳答案
这是处理它的好方法。它与您将要获得的一样高效。 我怀疑这个特定函数是否有一个公认的名称。这显然叫做 comparison-swap。
将其归纳为类型非常简单:
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
关于c++ - 有没有更有效的方法来对两个数字进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135586/