java如何“交换”数组中的两个值?
我想写一个选择排序算法。作为算法的一部分,我需要在数组中切换2个值,我尝试如下:array[min] = array[i]; array[i] = array[min];
但我相信这不会起作用,因为array[min]
已经是=
到array[i]
。那我该怎么交换呢?下面是我的密码
static int[] array = {3, 2, 1, 4, 5, 6};
static int n = 5;
static int temp;
for (int i = 0; i<=5; i++) {
int min = 0;
for (int j = i+1; j<=n; j++) {
//System.out.println(j);
if (array[j]<array[min]) {
min = j;
}
if (min != i) {
array[min] = array[i];
array[i] = array[min];
}
}
}
# 1 楼答案
交换的方式有很多:
带有第三个临时变量
不带临时变量(使用加法)
不带临时变量(使用位操作)
这里^
是按位的XOR operator李># 2 楼答案
也可以在不使用temp变量的情况下交换值。示例代码如下所示:
例如:
现在
这里可以避免使用temp变量