如何在多维数组中交换两个元素的位置?
假设我有一个数组:int Array[][]
Array={{1,2,3},{2,0,5},{-9,6,5}};
以及类似void interchange(position1,position2,newposition1,newposition2)
和interchange(1,1,3,1)
这样我得到这个数组:{-9,2,3},{2,0,5},{1,6,5}
,最少复制体内的变量/语句。
修改 我知道基本的方法,但希望有人能说出与指针有关的方法。我说“在体内最少复制变量/语句。”询问是否有比分配更短的方法
答案 0 :(得分:3)
伪代码
function interchange(position1,position2,newposition1,newposition2) {
// store the value at (position1,position2)
var temp = Array[position1][position2]
// put in (position1,position2) the value at (newposition1,newposition2)
Array[position1][position2] = Array[newposition1][newposition2]
// put in (newposition1,newposition2) the value previously stored
Array[newposition1][newposition2] = temp
}
答案 1 :(得分:2)
加上
Array[1][1]=Array[3][1]
这不起作用,因为您会丢失[1][1]
的值,所以请查看Swap
交换两个变量的最简单且可能最广泛使用的方法是使用第三个临时变量:
伪代码,而不是Java:
define swap (x, y)
temp := x
x := y
y := temp
答案 2 :(得分:2)
public int[][] swap(int[][] target, int xFrom, int yFrom, int xTo, int yTo){
int temp = target[xTo][yTo];
target[xTo][xTo] = target[xFrom][yFrom];
target[xFrom][yFrom] = temp;
return target;
}
答案 3 :(得分:1)
问题有点模糊,但希望这就是你要找的东西?
public int[][] swap(int[][] arr, int ind1, int subind1, int ind2, int subind2) {
int arg1 = arr[ind1][subind1];
arr[ind1][subind1] = arr[ind2][subind2];
arr[ind2][subind2] = arg1;
return arr;
}