交换两数算法总结

来源:互联网 发布:奥巴马医改 知乎 编辑:程序博客网 时间:2024/05/04 04:31

交换两数的方法大概结共有两种

一种需要第三变量,一种不需要第三变量(总结出三种)

1、需要第三变量

只能用指针实现

void swap(Int *a, int *b)

{

int  temp;

temp = *a;

*a = *b;

*b = temp;

}

2、

00)用加法来实现

void swap(int *a, int *b)

{ //这个仔细看下即可明白

*a = *a + *b;

*b = *a -*b;

*a = *a - *b;

}

01)用乘除法实现

void swap(int *a, int *b)

{ //这个仔细看下即可明白

*a = *a  *  *b;

*b = *a  /  *b;

*a = *a  / *b;

}


02)用异或运算符实现

//简单分析:

a = a^b,而a^a=0,a^0=a;

所以要求b =a ,只要a^b^b即可(上面a已变为a^b)

同理要使a = b,主要a^b^a即可,而通过上面运算,a=a^b,b=a,所以a=a^b

void swap(int *a, int *b)

{

*a = *a ^ *b;

*b =*b ^ *a;

*a = *a ^ *b;

}

或许还有其他方法,可以自己总结


原创粉丝点击