-2

如何交换多维数组中两个元素的位置?

假设我有一个数组: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}在正文中复制变量/语句的次数最少。

编辑: 我知道基本方法,但希望有人能说出与指针相关的方法。我说“在正文中最少复制变量/语句。” 询问是否有比 assignment 更短的方法

4

4 回答 4

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
} 
于 2013-01-03T15:50:27.447 回答
2

加上试过Array[1][1]=Array[3][1]

这行不通,因为你会失去 的价值[1][1],所以看看Swap

交换两个变量的最简单且可能使用最广泛的方法是使用第三个临时变量:

伪代码,而不是 Java:

define swap (x, y)
    temp := x
    x := y
    y := temp
于 2013-01-03T15:56:08.193 回答
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;
}
于 2013-01-03T15:57:24.680 回答
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;
}
于 2013-01-03T15:50:02.797 回答