有趣有用的小算法 交换算法

1.中间值交换

int a=1,b=2;
int c;//把c作为中间值交换
//交换a,b的值
c=a;
a=b;
b=c;

这个算法相当于交换ab两杯水,然后拿出一个空杯子c,先让c装满a的水,然后将b的水倒入a里面,这样a就装了b的水。最后把c的水倒入b中。

2.相减交换

int a=100,b=200
a=a+b;//将ab的值放进a里面a=100+200
b=a-b;//然后a减去b的值,剩下a原来的值,所以a的值就赋给100 b=100+200-200
a=a-b;//最后a减去b(b现在装的是a原来的值)的值,剩下的就是b原来的值 a=100+200-100

这个交换算法与上一个想比,节省了空间,但是有一个弊端,那就是a+b不能超出int的范围。

3.异或算法交换值

int a=100,b=200;
a=a^b;
b=a^b;
a=a^b;

异或,就是相同出0,不同出1,1+1=0,1+0=1

这个算法的好处是不用担心超出范围,也节省了空间,缺点是只能对整形值和char型进行交换,浮点型的不能。

猜你喜欢

转载自blog.csdn.net/weixin_42581560/article/details/81121503
今日推荐