static void swap(int[] data, int i, int j) {//记得加此条件,data[i]与data[j]相同时异或运算得0if (data[i] != data[j]) {data[i] = data[i] ^ data[j];data[j] = data[i] ^ data[j];data[i] = data[i] ^ data[j];}}static void sort(int[] data, int begin, int end) {if (begin < end) {int cur = data[begin];int i = begin;int j = end + 1;while (true) {while (i < end && cur >= data[++i]);while (j > begin && cur <= data[--j]);if (i < j) {swap(data, i, j);} else {break;}}swap(data, begin, j);sort(data, begin, j - 1);sort(data, j + 1, end);}}public static void main(String[] args) {int[] data = { 2, 1, 3, 8, 4, 9 };sort(data, 0, 5);System.out.println(Arrays.toString(data));}

在上述例子中有3^3的情形发生,最后得出0导致排序有误。

用异或运算进行数组元素互换时记得比较连个元素值是否相等。

转载于:https://www.cnblogs.com/crime-king/archive/2013/04/21/3034002.html

【陷阱】交换排序中交换动作的陷阱相关推荐

  1. 3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。在下面表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网交换 机的交换表是空的。试把该表中其他的栏目都填写

    3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器.在下面表中的"动作"一栏中,表示先后发送了4个帧.假定在开始时,以太网交换 机的交换表是空的.试把该 ...

  2. 利用深度学习对象检测器从信息素陷阱图像中自动计数松球菌监测

    Simple Summary 松球菌(Matsucoccus thunbergianae)是一种对黑松造成广泛损害的森林害虫;因此,监测这种害虫是必要的,以尽量减少环境和经济损失的森林.然而,利用信息 ...

  3. java List.subList方法中的超级大陷阱

    java List.subList方法中的超级大陷阱 2012-06-26 10:13:18|  分类: java 基础知识 |  标签:java集合使用  java基础  |举报|字号 订阅 下载L ...

  4. 在java中的交换方法有哪些_java中交换两个变量的值有哪几种方法,交换两个变量a和b的值...

    java中交换两个变量的值有哪几种方法在Java中,有哪些方法可以交换两个变量的值, 方法: 1.定义临时变量 2.没有必要定义临时变量 3.使用位运算符 (学习视频分享:java课程) 代码示例: ...

  5. 如何在vim中交换两个打开文件(在拆分中)的位置?

    本文翻译自:How can I swap positions of two open files (in splits) in vim? Assume I've got some arbitrary ...

  6. 777. 在LR字符串中交换相邻字符

    777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...

  7. cocos2d-x中的动作分析

    在cocos2d-x中动作的执行调度是受cocos2d-x的全局定时器控制的,当初始完导演后便已经启动用于管理动作的update定时器. bool CCDirector::init(void) {.. ...

  8. Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)

    777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...

  9. 计算机网络实验五:交换机中交换表的自学习功能

    一.实验目的 (1)理解二层交换机交换表的自学习功能. 二.实验仪器 1.装有Cisco Packet Tracer的Windows10计算机 三.实验原理(30%) 1.交换机可以即插即用,不需要人 ...

最新文章

  1. 清华大佬教你一招最便捷搭建 Zookeeper 的方法!
  2. 企业网络高级技术第二章STP实验
  3. NPM:nodejs官方包管理工具的简介、安装、使用方法之详细攻略
  4. 直方图均衡化算法 matlab,matlab程序_retinex_frankle_mccann+直方图均衡化_去雾算法
  5. Kettle使用_10 存储过程与命名参数
  6. 2019\Province_C_C++_B\试题G-完全二叉树的权值
  7. 【数据库系列学习一】Access与Excel的区别和联系
  8. 前端如何实现网络速度测试功能_如何通过fiddler的断点功能,来实现不同场景的测试...
  9. 使用Go构建区块链 第3部分:持久化和cli
  10. 最新教师计算机测试题,信息技术教师基本功测试题
  11. 风力摆控制系统,stm32f1程序,通过pid控制算法实现了风力摆摆定长直线,变长直线,一定角度摆动,定点停滞
  12. 卡西欧计算机蓝屏的处理方法,电脑出现蓝屏怎么办 电脑出现蓝屏解决方法【图文详解】...
  13. 用AI 来一键体验“返老还童”的快乐!马化腾、李彦宏、杨幂都能还原的那种 |儿童节福利...
  14. 个人中心(修改密码)
  15. MaxEnt软件的安装
  16. 计算机教育属于什么教育学类,应用电子技术教育专业属于什么门类
  17. 深入剖析BLE蓝牙数据收发处理
  18. Android游戏语音SDK及功能实现流程
  19. 关于海康ipc的几个参数
  20. 在Win10上运行ESXI-Comstomer

热门文章

  1. 在不重装XP系统,增加系统盘剩余空间
  2. C#字符串及数组操作
  3. mysql数据库连接过多的错误,可能的原因分析及解决办法
  4. JUC多线程核心知识-思维导图
  5. final 修饰方法参数
  6. jquery 轮播插件 bxslider
  7. STL priority实例
  8. XMPP接受发送消息
  9. iOS开发那些事--iOS6 UI状态保持和恢复
  10. 我一直怀疑这孩子不是我亲生的,眼神太二了