黑马程序员技术交流社区

标题: 关于使用函数实现数组中两个数的交换 [打印本页]

作者: yolande    时间: 2015-12-25 23:38
标题: 关于使用函数实现数组中两个数的交换
今天下午长沙IOS基础班学习了位运算!我们帅气的斌哥,告诉我们一个非常装逼的交换两个变量的方法,那就是位运算!于是我在快速排序中使用,结果出现了很多不在数组中的......0,0,0,0,0,0,0,........
通过调试,我发现,当要交换的两个索引 "i"和"j"相同时,就会产生0.
懂了吧  a^=a; ----> a变为了0
解决办法就是,在交换之前,判断一下i 和 j
  1. /**
  2. *  交换数组中两变量的值
  3. *
  4. *  @param a 数组名
  5. *  @param i 其中一个变量
  6. *  @param j 另一个变量
  7. */
  8. void exchange(int a[], int i, int j) {
  9.     if (i != j) {
  10.         a[i] ^= a[j];
  11.         a[j] ^= a[i];
  12.         a[i] ^= a[j];
  13.     }
  14. }
复制代码









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2