几种swap算法简介

记一下几种swap算法,以后也方便查看.

最初接触和使用的一种要属以下这种了:

int x = 10;
int y = 5;
int 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);
呵呵,觉得还不错.至少对编程思路有所提升了.

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值