swap()交换两个变量的方法汇总

借助第三方变量

//借助temp变量
	public static void swap(int arr[],int i,int j) {
		int temp = arr[i];
		   arr[i] = arr[j];
		   arr[j] = temp;
		
	}

数学表达式

public static void swap(int[] arr, int i, int j) {
        arr[i] = arr[i] + arr[j];
        arr[j] = arr[i] - arr[j];
        arr[i] = arr[i] - arr[j];
    }

异或运算

//异或运算-位运算效率高	
      public static void swap(int[] arr, int i, int j) { 
       
         arr[i] = arr[i] ^ arr[j];
         arr[j] = arr[i] ^ arr[j]; //arr[j] = (arr[i] ^ arr[j]) ^ arr[j] = arr[i]
         arr[i] = arr[i] ^ arr[j]; //arr[i] = (arr[i] ^ arr[j]) ^ arr[i] = arr[j]
    }

三种方法推荐:异或运算 Ps: 随机快排时,用 异或运算 交换变量会异常(暂时没有解决)……

(数学理论:一个数异或同一个数两次,结果还是那个数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小筱月

javascript sort 函数用法

简单的说,sort() 在没有参数时,返回的结果是按升序来排列的。即字符串的Unicode码位点(code point)排序

1503
来自专栏河湾欢儿的专栏

数组

891
来自专栏五分钟学算法

每天一算:Reverse String

我们会在每天早上8点30分准时推送一条LeetCode上的算法题目,并给出改题目的动画解析以及参考答案,每篇文章阅读时长为五分钟左右。

892
来自专栏尾尾部落

[剑指offer] 不用加减乘除做加法

872
来自专栏程序生活

Leetcode-Easy 796. Rotate String

796. Rotate String 描述: 有两个字符串A和B,将A的第一个字符左移到最后位置,判断此时A是否等于B,如果等于返回true。不等于则继续左...

2895
来自专栏程序生活

Leetcode-Easy 461.Hamming Distance

Leetcode-Easy是Leecode难度为"Easy"的解法,由python编码实现。 461.Hamming Distance 描述: ? 思路: 首...

2825
来自专栏ml

java学习之协调同步的线程

            当一个线程使用的同步方法中用到某个变量,而此变量有需要其他线程修改后才能符合本线程的需要,      那么可以在同步方法中使用wait(...

3339
来自专栏C语言及其他语言

【每日一题】问题 1074: 数字整除

定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。

1342
来自专栏Golang语言社区

Golang 中"泛型"的支持

Golang不支持一般的类似java中的标记式泛型。很多人因此而十分不满,认为没有泛型增加了很多工作量。而目前由于泛型支持的复杂性,Golang的设计和实现者并...

37813
来自专栏韦弦的偶尔分享

Swift 计数质数 - LeetCode

1993

扫码关注云+社区

领取腾讯云代金券