美文网首页iOS 开发 iOS Developer
小谈两数比较和交换问题

小谈两数比较和交换问题

作者: shenyuanluo | 来源:发表于2016-08-27 21:16 被阅读30次

    比较

    1、两个变量int aint b,找出两个数中间比较大的。
    方法一:

    int max;
    if (a > b)
    {
        max = a;
    }
    else
    {
        max = b;
    }
    

    方法二:

    int max = (a > b) ? a : b;
    

    方法三:

    int max = ((a+b)+abs(a-b))/2
    

    交换

    2、两个变量int aint b,交换这两个变量的值。
    方法一:

    int a = 10;
    int b = 20;
    int temp = a;
    a = b;
    b = temp;
    

    这样做的缺点是消耗多内存,效率低。

    方法二:

    a = a + b;
    b = a - b;
    a = a - b;
    

    这样做的缺点是如果a、b都是比较大的两个数,a = a+b时就会超界。

    方法三:

    a = a ^ b;
    b = a ^ b;
    a = a ^ b; 
    

    这样做的优点是:消耗内存少,且无须担心超界的问题。

    这样做的原理是按位异或运算。按位异或运算符^ 是双目运算符,其功能是参与运算的两数各对应的二进制位相异或,当对应的二进制位相异时,结果为1,当对应的二进制位相同时,结果为0,参与运算数仍以补码形式出现。

    相关文章

      网友评论

        本文标题:小谈两数比较和交换问题

        本文链接:https://www.haomeiwen.com/subject/pndtettx.html