A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天下午长沙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. }
复制代码




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马