Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组中的交换、排序程序_Java_Sorting - Fatal编程技术网

Java 数组中的交换、排序程序

Java 数组中的交换、排序程序,java,sorting,Java,Sorting,我在维基页面上有关于排序的代码。 我想它必须换成数组元素,但是有人能正确地解释一下吗 array[i] ^= array[i-1]; array[i-1] ^= array[i]; array[i] ^= array[i-1]; wiki页面这是一种交换数组[i]和数组[i-1]的方法 ^=在两个参数之间执行按位异或运算,并将其赋值给左参数。 要了解如何导致交换,只考虑一对位:A和B分别包含值x和y。 在开始之前,我们有: A=x B=y 第一条指令A^=B表示A=A或XOR

我在维基页面上有关于排序的代码。 我想它必须换成数组元素,但是有人能正确地解释一下吗

   array[i] ^= array[i-1];
   array[i-1] ^= array[i];
   array[i] ^= array[i-1];

wiki页面

这是一种交换数组[i]和数组[i-1]的方法

^=在两个参数之间执行按位异或运算,并将其赋值给左参数。 要了解如何导致交换,只考虑一对位:A和B分别包含值x和y。 在开始之前,我们有: A=x B=y 第一条指令A^=B表示A=A或XOR B,因此我们最终得出: A=x或y B=y 第二条指令B^=A表示B=B XOR A,因此我们最终得出: A=x或y B=y XOR x XOR y 第三条指令A^=B表示A=A或XOR B,因此我们最终得出: A=x XOR y XOR y XOR x XOR y B=y XOR x XOR y 利用XOR的结合性和共变性,我们可以将之前的操作重新排序为: A=x XOR x XOR y XOR y XOR y B=y XOR y XOR x 利用位异或本身始终为0的特性: A=0或0或y B=0或x 使用0 XOR位始终为同一位的属性: A=y B=x
正如你所看到的,A和B已经互换。

如果你引用的是文本,你还应该包括源代码。我不是,是我自己写的。虽然是的,但搜索它并复制过去可能比为混乱感到抱歉更快。我通常看不到正确格式的答案,当我看到时,它们通常是一些文章的部分副本。无论如何,回答得不错+1.你怎么会那样想!我犯了很多格式化错误,必须多次编辑才能更正。