-2

多次元配列の 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}本体の変数/ステートメントのコピーを最小限に抑えます。

編集: 基本的なアプローチは知っていましたが、誰かがポインターに関連するメソッドを教えてくれることを望んでいました. 「本体内の変数/ステートメントのコピーを最小限に抑えて」と言いました。割り当てよりも短い方法があったかどうかを尋ねる

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]

の値が失われるため、これは機能しません。Swap[1][1]を見てください。

2 つの変数を交換する最も簡単で、おそらく最も広く使用されている方法は、3 番目の一時変数を使用することです。

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 に答える