【经典算法问题 二】交换两个变量值,不使用第三个变量

简介: 【经典算法问题 二】交换两个变量值,不使用第三个变量

昨天面试的时候问到了这个,回答了异或的方式,后来自己又想了一下,总结这么几种

/**
 * 
 */
package test;
import java.util.Stack;
/**
 * <p>
 * Title:NoNeedThreeChange
 * </p>
 * <p>
 * Description:
 * </p>
 * 
 * @author 田茂林
 * @data 2017年8月25日 上午9:08:13
 */
public class NoNeedThreeChange {
  public static void changewithoperate(int a, int b) {     //利用加减运算符
    a = a - b;
    b = a + b;
    a = b - a;
    System.out.println("a =" + a);
    System.out.println("b =" + b);
  }
  public static void changewithoperateY(int a, int b) {    //利用异或的原理
    a = a ^ b;
    b = a ^ b; // 一个数和自己的异或为0,任何一个数和0异或是它本身
    a = a ^ b;
    System.out.println("a =" + a);
    System.out.println("b =" + b);
  }
  public static void changewithStack(int a, int b) {    //利用栈的后进先出原理
    Stack<Integer> s= new Stack<Integer>();
    s.push(a);
    s.push(b);
    System.out.println("a =" + s.pop());
    System.out.println("b =" + s.pop());
  }
  public static void main(String[] args) {
    int a = 10;
    int b = 20;
    changewithoperate(a, b);
    System.out.println("==================================");
    changewithoperateY(a, b);
    System.out.println("==================================");
    changewithStack(a,b);
  }
}

输出结果

a =20
b =10
==================================
a =20
b =10
==================================
a =20
b =10


相关文章
|
9月前
|
算法
【优选算法专栏】专题九:链表--------两两交换链表中的节点
【优选算法专栏】专题九:链表--------两两交换链表中的节点
55 0
|
4月前
|
算法 安全 Java
介绍一下比较与交换算法
【10月更文挑战第20天】介绍一下比较与交换算法
31 0
|
8月前
|
机器学习/深度学习 存储 算法
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
|
8月前
|
搜索推荐 算法 Java
JAVA中的交换类排序算法详解
JAVA中的交换类排序算法详解
68 1
【每日挠头算法题(2)】压缩字符串|仅执行一次字符串交换能否使两个字符串相等
【每日挠头算法题(2)】压缩字符串|仅执行一次字符串交换能否使两个字符串相等
|
8月前
|
存储 机器学习/深度学习 算法
python 3种算法 回溯法、字典序生成、递归交换 实现全排列【力扣46题】
python 3种算法 回溯法、字典序生成、递归交换 实现全排列【力扣46题】
|
9月前
|
网络协议 算法 数据库
【专栏】IS-IS协议是内部网关协议,常用于大型网络路由器间的路由信息交换,基于OSI的CLNP标准和Dijkstra算法
【4月更文挑战第28天】IS-IS协议是内部网关协议,常用于大型网络路由器间的路由信息交换,基于OSI的CLNP标准和Dijkstra算法。其特点是分层设计、快速收敛、高效资源利用和强故障恢复能力。在现代网络中,IS-IS广泛应用于服务提供商、企业网络及与其他协议的融合,是构建稳定、高效网络的关键。了解和应用IS-IS能提升网络系统的可靠性和效率。
177 0
|
9月前
|
搜索推荐 算法
在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?
【2月更文挑战第8天】【2月更文挑战第21篇】在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?
62 1
|
9月前
|
算法 测试技术 C++
【动态规划】【C++算法】801. 使序列递增的最小交换次数
【动态规划】【C++算法】801. 使序列递增的最小交换次数
【算法】排序——选择排序和交换排序(快速排序)
上篇文章讲述了插入排序及插入排序的优化希尔排序,今天我们继续给大家带来排序中的选择排序和交换排序,选择排序包括直接选择排序、 其中还包括堆排序,因为之前讲过堆排序,这篇文章就不多讲解,点击直达堆排序。交换排序包括冒泡排序、快速排序。让我们开始今天的选择排序之旅吧!!!

热门文章

最新文章