二进制数字的对换

0101 0011

y 0110

x 0011

y 0101

两个2进制数字执行异或操作将不需要声明额外的临时变量即可对换

void swap x y
y x 异或y
x x异或y
y x异或y

void reverse_array (int a[], int cnt) { int first , last; for(first = 0, last = cnt - 1;first <= last;first++,last--) inplace_swap(&a[first]&, a[last]); }

A.对于2k+1 最后一轮循环的first 和 last值是k
B.因为函数inplace_swap的执行 两个相同的值执行异或操作将得0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,858评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • “曲青杨,救我,救我。”这个声音再一次走进了曲青杨的梦里。 她满脸鲜血一动不动的躺在冰冷的地上,眼睛望着曲青杨的方...
    向晚时阅读 553评论 0 0
  • 西部片除了豪侠劣绅,快意江湖,铁血戈壁,驿路狂飙之外,还有一份对自然的向往在里头,青山翠谷,牧场夕阳,那是跟大都市...
    晚霞消失之时阅读 341评论 0 0