交换两个整数的三种方法
时间:2019-09-27
本文章向大家介绍交换两个整数的三种方法,主要包括交换两个整数的三种方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
临时变量法
这个相信大家都知道,刚学编程时应该都会学到这种交换值的方法。
虽然用到了1的额外空间,但这是最容易理解,效率也是最高的一种方法。
public void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
加减法
先假设a = 1 , b = 2
,要交换 a 和 b 。
- 执行
a = a + b
,现在 a 就是 a + b。 - 执行
b = a - b
,b 就相当于 a + b - b 等于原来的 a ,b 就变成 a 了。 - 执行
a = a - b
,现在 b 就是原来的 a ,a 就相当于 a + b - a 就等于原来的 b,a 变成 b 了。
public void swap(int[] array, int i, int j) {
array[i] = array[i] + array[j];
array[j] = array[i] - array[j];
array[i] = array[i] - array[j];
}
注意,该方法有溢出的风险。
异或法
我们知道,有两条异或性质。
- 任何数和0异或,都得任何数。
- 任何数与自身异或,都得0。
在这里,我们就用到了第2条,道理和加减法差不多,只是运算变为了异或,而且不会有溢出问题。
public void swap(int[] array, int i, int j) {
array[i] = array[i] ^ array[j];
array[j] = array[i] ^ array[j];
array[i] = array[i] ^ array[j];
}
小结
后两种方法因为需要运算,而异或法又要比加减法好些,比第一种慢点,但没有使用额外空间。
后两种方法只是用于装逼,看起来很高级的样子,在实际操作中还是使用第一种为好。
原文地址:https://www.cnblogs.com/qiu_jiaqi/p/SwapNum.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 剑指offer(07-09)题解
- 学以致用C++设计模式 之 “适配器模式”
- FTP文件管理项目(本地云)项目日报(九)
- 【Linux】血泪教训 -- 动态链接库配置方法
- FTP文件管理项目(本地云)项目日报(八)
- FTP文件管理项目(本地云)项目日报(七)
- FTP文件管理项目(本地云)项目日报(六)
- Transformers Assemble(PART I)
- FTP文件管理项目(本地云)项目日报(五)
- 几个Python“小伎俩”
- FTP文件管理项目(本地云)项目日报(四)
- BERT源码分析(PART I)
- FTP文件管理项目(本地云)项目日报(二)
- FTP文件管理项目(本地云)项目日报(一)
- 【奇技淫巧】-- 朋友圈(并查集)