交换a,b两个元素的值
来源:互联网 发布:python编译器是什么 编辑:程序博客网 时间:2024/04/30 14:36
交换两个元素的值,这是件很简单的事情,用一个中间变量temp保存一下其中一个元素的值就OK了.
我们可以这样写:
1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 3, b = 5; 6 int temp = 0; 7 temp = a; 8 a = b; 9 b = temp;10 return 0;11 }
如果不使用第三个变量呢,我们可以通过数学的方法利用先求和再求差的方法来交换两个元素的值.
1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 3, b = 5; 6 a = a + b; 7 b = a - b; 8 a = a - b; 9 printf("a = %d, b = %d\n", a, b);10 return 0;11 }
但是,用这种方法请注意:这样做是有问题的:当a,b两个数都很大的时候,a = a + b 是有越界的风险的,所以这种方法很明显不是完美的.
那么,有没有一种既不用第三个变量又不会产生越界的方法呢?这个可以有.我们可以用异或(^)的方法来解决这个问题.
异或的运算法则是:相同为0,不同为1, 1 ^ 1 = 0, 1 ^ 0 = 1, 0 ^ 0 = 0, 0 ^ 1 = 1.
假设 a = 3, b = 5. 先让a = a ^ b = 3 ^ 5 = 011 ^ 101 = 110; b = a ^ b = 110 ^ 101 = 011 (3); a = a ^ b = 110 ^ 011 = 101 (5).
这样就实现了a,b的交换.
实现的代码如下:
1 #include <stdio.h> 2 int main() 3 { 4 int a = 3, b = 5; 5 a = a ^ b; 6 b = a ^ b; 7 a = a ^ b; 8 printf("a = %d, b = %d\n", a, b); 9 return 0;10 }
0 0
- 交换a,b两个元素的值
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
- 有两个数组a,b,大小都为n,数组元素的值任意,无序;要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
- 有两个数组a,b,大小都为n,数组元素的值任意,无序;要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
- 有两个数组a,b,大小都为n,数组元素的值任意,无序; 要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小。
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
- 【华为】题目:有两个数组a,b,大小都为n,数组元素的值任意,无序; 要求: 通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小。
- 有两个序列a,b,要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
- 有两个序列a,b,大小都有n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b无素的和]之间的差最大。
- 交换两个变量a与b的值
- 两个变量a,b交换值的方法
- 交换数组A和数组B的元素(这两个数组大小相同)
- a,b两个值相互交换
- 有两个序列a,b,大小都为 n,序列元素的值任意整数,无序 通过交换a,b中的元素,使序列 a的和与序列b的和之间的差最小
- 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和
- 约瑟夫环问题的数组实现
- 排序算法之冒泡排序
- [Leetcode]Find Minimum in Rotated Sorted Array I & II
- 排序算法之插入排序
- 排序算法之选择排序
- 交换a,b两个元素的值
- 大家不要再用流量软件了,害人呀!
- ubuntu安装libxml2
- Codeforces 482C Game with Strings(dp+概率)
- Spring Security3.1 配置说明
- Android开发中:如何判断某Application和Activity的存在性
- android 机型适配问题
- 简单理解WCF的安全
- Visual C++ 2010新功能之auto关键字