| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
yn6e
10年前发布

几种SWAP算法

最初

int x = 10;  int y = 5;  int tmp;  tmp = x;  x = y;  y = tmp;  System.out.println("x: " + x + " y: " + y);

以下的几种方法觉得有些新鲜:

第一种:利用加减法交换值.(对于Integer.MAX_VALUE和Integer.MIN_VALUE也可以准确的交换)

int x = 10;  int y = 5;  x = x + y;   // x 15  y = x - y;   // y 10  x = x - y;   // x 5  System.out.println("x: " + x + " y: " + y);

第二种:利用异或运算交换值.

int x = 10; // x 0000 1010  int y = 5;  // y 0000 0101  x = x ^ y;  // x 0000 1111  y = x ^ y;  // y 0000 1010  x = x ^ y;  // x 0000 0101  System.out.println("x: " + x + " y: " + y);

第三种:利用表达式运算交换值.

int x = 10;  int y = 5;  x = y + 0 * (y = x);  // 先将y参与运算,然后将x值赋给y,最后再将结果(也就是y)赋给x  System.out.println("x: " + x + " y: " + y);