现在的位置: 首页 > 综合 > 正文

CI19.1-原地交换两个数

2019年03月07日 ⁄ 综合 ⁄ 共 238字 ⁄ 字号 评论关闭

实现一个函数原地交换两个数,且不能用辅助空间。

思路:

经典问题。

void swap(int& a, int& b)
{
	a = b - a;
	b = b - a;
	a = b + a;
}

void swap(int& a, int& b)
{
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
}


如果参数是两个相同的数,则不可以调用以上两个形式的swap函数,因为会有一个数被置0。如果程序中swap可能会作用在相同的数,则只能用一个临时变量的swap函数。

void swap(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

抱歉!评论已关闭.