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

c# – 排序3个数字而不分支

发布时间:2020-12-15 20:03:07 所属栏目:百科 来源:网络整理
导读:在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 +
在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,c);
   int middlenum = a + b + c - maxnum - minnum;
   a = maxnum;
   b = middlenum;
   c = minnum;
}

(编辑:李大同)

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

    推荐文章
      热点阅读