c# - 对 3 个数字进行无分支排序

标签 c# c++

在 C# 或 C++ 中,如何实现三(整数)数的无分支排序?

这可能吗?

最佳答案

没有条件。只有一个转换为 uint。完美解决。

int abs (int a) 
{
    int b = a;
    b = (b >> (sizeof(int)*CHAR_BIT-1) & 1);
    return 2 * b * (a) + a; 
}
int max (int a, int b) { return (a + b + abs(a - b)) / 2; }
int min (int a, int b) { return (a + b - abs(a - b)) / 2; }


void sort (int & a, int & b, int & c)
{       
   int maxnum = max(max(a,b), c);
   int minnum = min(min(a,b), c);
   int middlenum = a + b + c - maxnum - minnum;
   a = maxnum;
   b = middlenum;
   c = minnum;
}

关于c# - 对 3 个数字进行无分支排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098146/

相关文章:

C#如何使用泛型类型

c# - WPF Canvas 性能 - 多次调用 children.add

c++ - 我可以在不查看每个元素的情况下将 std::vector<Animal*> 转换为 std::vector<Dog*> 吗?

javascript - Web 应用程序作为桌面应用程序

c# - C# 是否被视为上下文无关语言?

c# - string.Format() 空白零

c++ - XPATH 包含(字符串,字符串)不工作

c++ - 无法在使用 malloc/placement new 创建的类上调用虚函数

C++ : Function overloading vs Variadic function vs Variadic template vs default parameter

c++ - 开启g++优化导致segmentation fault