三种交换两个整数的方法

交换 int a, int b

1、最弱的方法

1 void swap(int &a,int &b)
2 {
3      int c = a;
4     a = b;
5     b = c;
6 }

2、不用另外开辟空间的方法

1 void swap(int &a,int &b)
2 {
3    a=a+b;
4    b=a-b;
5    a=a-b;
6 }

3、高效的位操作

1 void swap(int &a,int &b)
2 {
3     a=a ^b;
4     b =a^ b; //(=a^b^b=a^0=a)
5     a= a ^ b;  //(=a^b^a=a^a^b=0^b=b)
6 }
时间: 2024-10-11 02:48:13

三种交换两个整数的方法的相关文章

算法学习 - 不申请第三个数交换两个整数的值

交换两个数 正常情况我们需要多申请一个变量来交换两个数的值(假设变量为a, b).例子如下: int temp = a; a = b; b = temp; 这样子就可以了.但这终究是一种需要申请临时变量的方法,总要去想想临时变量的名字.下面主要介绍两种方法. 直接运算 这种办法简单明了,也是我最喜欢使用的办法,因为即使是浮点型也可以用这种办法,继续假设两个变量是a和b. a = a+b; b = a - b; a = a - b; 这样就交换了!是不是很简单.一下没懂的可以找个例子去试试. 逻辑

交换两个整数的三种方法

package com.zby.bubble; /** * <class description> 三种方法交换两个整数的值 * * @author zby * */ public class Exchange { public static void main(String[] args) { splitLine(); exchange1(Integer.MAX_VALUE, Integer.MAX_VALUE - 1); exchange1(99, 100); exchange1(Inte

c语言-交换两个整数

使用c来写一个函数来实现交换两个整数. 第一种 一般的方法,引用中间变量,方便快捷. 1 void swap(int *a, int *b) 2 { 3 int tmp = *a; 4 *a = *b; 5 *b = tmp; 6 } 第二种 void swap(int *a, int *b) { int tmp = *a + *b; *b = tmp - *b; *a = tmp - *b; } tmp虽然可能会溢出,但是依然能够达到交换的效果. 上面的都是引用了中间变量,再看看不使用中间变量

交换两个数值的方法,注意有【坑】,闲来无事,总结一下

交换两个数值的方法 题面: 设a,b两个整数值,交换两个a,b二者的值, 例如: 设 a=1, b=2, 交换后 a=2,b=1 这几种方法,网上也说过很多,但是都没注意这几种方法的[坑],不要只顾着新奇方法,毕竟[可靠性]很重要,这里稍微记录下 方法1 最简单的方法就是加一个中间量: int c=a; a=b; b=c; 方法2 使用异或运算 xor: a = a xor b; //a=3, b=2 b = a xor b; //a=3, b=1 a = a xor b; //a=2, b=1

试比较三种交换方式

参考链接:http://blog.chinaunix.net/uid-21411227-id-1826932.html三种交换技术及其比较2010-09-22 17:17:57 分类: 系统运维 一.电路交换: “电路交换”(Circuit Switching)又称为“线路交换”,是一种面向连接的服务.两台计算机通过通信子网进行数据电路交换之前,首先要在通信子网中建立一个实际的物理线路连接.最普通的电路交换例子是电话系统.电路交换是根据交换机结构原理实现数据交换的.其主要任务是把要求通信的输入端

[转]SQL三种获取自增长的ID方法

SQL SERVER中的三种获得自增长ID的方法  这个功能比较常用,所以记下来以防自己忘掉. SCOPE_IDENTITY 返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值.一个作用域就是一个模块--存储过程.触发器.函数或批处理.因此,如果两个语句处于同一个存储过程.函数或批处理中,则它们位于相同的作用域中. IDENT_CURRENT  返回为任何会话和任何作用域中的指定表最后生成的标识值.这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制

MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法

在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用总结归纳一下,以方便大家查询使用. 下面就分别给大家介绍.讲解一下三种数据库实现分页查询的方法. 一. MySQL 数据库分页查询 MySQL数据库实现分页比较简单,提供了LIMIT函数.一般只需要直接写到sql语句后面就行了. LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有

unity中三种调用其他脚本函数的方法

第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数 第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数 unity中三种调用其他脚本函数的

使用指针交换两个整数的值

#include<stdio.h>void change_1(int a, int b);void change_2(int *a, int *b); int main(){ int a = 10; int b = 20; printf("changed before:"); printf("a=%d\tb=%d\n", a, b); change_1(a,b); printf("changed 1 affter:"); printf