【算法】不借助第三个变量实现交换两个数的值

    科技2023-10-18  95

    有两种方法:一是通过异或位运算实现;二是通过加减操作实现

    一、通过异或位运算实现

    def exchange(x,y): # 异或位运算实现交换两个数的值 x=x^y y=x^y x=x^y return x,y x = 2 y = 3 newX, newY = exchange(x,y) print(newX, newY)

    位运算就是基于整数的二进制表示进行的运算。理解位运算首先要理解二进制。位运算总共只有5种运算:与(&)、或(|)、异或(^)、左移(<<)、右移(>>)。在异或运算中规定了以下:

    0 ^ 0 = 0 1 ^ 1 = 0 1 ^ 0 = 0 0 ^ 1 = 0 0 ^ x = x (x为任何数) 1 ^ x = x取反(x为任何数) x ^ x = 0(x为任何数)

    二、通过加减操作实现

    def exchange(x, y): # 加减操作实现交换两个数的值 x = x + y y = x - y x = x - y return x, y x = 2 y = 3 newX, newY = exchange(x,y) print(newX, newY)

    值得注意的是,使用该方法交换两个数的值时有可能会发生溢出现象,因此只适用于对数值不大的数执行操作。

    Processed: 0.018, SQL: 8