黑马程序员技术交流社区
标题:
关于使用函数实现数组中两个数的交换
[打印本页]
作者:
yolande
时间:
2015-12-25 23:38
标题:
关于使用函数实现数组中两个数的交换
今天下午长沙IOS基础班学习了位运算!我们帅气的斌哥,告诉我们一个非常装逼的交换两个变量的方法,那就是位运算!于是我在快速排序中使用,结果出现了很多不在数组中的.....
.0,0,0,0,0,0,0,
........
通过调试,我发现,当要交换的两个索引
"i"和"j"
相同
时,就会产生0.
懂了吧
a
^=a
;
---->
a
变为了0
解决办法就是,在交换之前,判断一下i 和 j
/**
* 交换数组中两变量的值
*
* @param a 数组名
* @param i 其中一个变量
* @param j 另一个变量
*/
void exchange(int a[], int i, int j) {
if (i != j) {
a[i] ^= a[j];
a[j] ^= a[i];
a[i] ^= a[j];
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2