【陷阱】交换排序中交换动作的陷阱
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
【陷阱】交换排序中交换动作的陷阱相关推荐
- 3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。在下面表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网交换 机的交换表是空的。试把该表中其他的栏目都填写
3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器.在下面表中的"动作"一栏中,表示先后发送了4个帧.假定在开始时,以太网交换 机的交换表是空的.试把该 ...
- 利用深度学习对象检测器从信息素陷阱图像中自动计数松球菌监测
Simple Summary 松球菌(Matsucoccus thunbergianae)是一种对黑松造成广泛损害的森林害虫;因此,监测这种害虫是必要的,以尽量减少环境和经济损失的森林.然而,利用信息 ...
- java List.subList方法中的超级大陷阱
java List.subList方法中的超级大陷阱 2012-06-26 10:13:18| 分类: java 基础知识 | 标签:java集合使用 java基础 |举报|字号 订阅 下载L ...
- 在java中的交换方法有哪些_java中交换两个变量的值有哪几种方法,交换两个变量a和b的值...
java中交换两个变量的值有哪几种方法在Java中,有哪些方法可以交换两个变量的值, 方法: 1.定义临时变量 2.没有必要定义临时变量 3.使用位运算符 (学习视频分享:java课程) 代码示例: ...
- 如何在vim中交换两个打开文件(在拆分中)的位置?
本文翻译自:How can I swap positions of two open files (in splits) in vim? Assume I've got some arbitrary ...
- 777. 在LR字符串中交换相邻字符
777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...
- cocos2d-x中的动作分析
在cocos2d-x中动作的执行调度是受cocos2d-x的全局定时器控制的,当初始完导演后便已经启动用于管理动作的update定时器. bool CCDirector::init(void) {.. ...
- Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)
777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...
- 计算机网络实验五:交换机中交换表的自学习功能
一.实验目的 (1)理解二层交换机交换表的自学习功能. 二.实验仪器 1.装有Cisco Packet Tracer的Windows10计算机 三.实验原理(30%) 1.交换机可以即插即用,不需要人 ...
最新文章
- 清华大佬教你一招最便捷搭建 Zookeeper 的方法!
- 企业网络高级技术第二章STP实验
- NPM:nodejs官方包管理工具的简介、安装、使用方法之详细攻略
- 直方图均衡化算法 matlab,matlab程序_retinex_frankle_mccann+直方图均衡化_去雾算法
- Kettle使用_10 存储过程与命名参数
- 2019\Province_C_C++_B\试题G-完全二叉树的权值
- 【数据库系列学习一】Access与Excel的区别和联系
- 前端如何实现网络速度测试功能_如何通过fiddler的断点功能,来实现不同场景的测试...
- 使用Go构建区块链 第3部分:持久化和cli
- 最新教师计算机测试题,信息技术教师基本功测试题
- 风力摆控制系统,stm32f1程序,通过pid控制算法实现了风力摆摆定长直线,变长直线,一定角度摆动,定点停滞
- 卡西欧计算机蓝屏的处理方法,电脑出现蓝屏怎么办 电脑出现蓝屏解决方法【图文详解】...
- 用AI 来一键体验“返老还童”的快乐!马化腾、李彦宏、杨幂都能还原的那种 |儿童节福利...
- 个人中心(修改密码)
- MaxEnt软件的安装
- 计算机教育属于什么教育学类,应用电子技术教育专业属于什么门类
- 深入剖析BLE蓝牙数据收发处理
- Android游戏语音SDK及功能实现流程
- 关于海康ipc的几个参数
- 在Win10上运行ESXI-Comstomer