(新しい配列を作成せずに) 配列を元に戻すにはどうすればよいですか?
28464 次
13 に答える
13
public static int[] reverseArrayWithoutTempArray(int[] array) {
int i = 0, j = array.length - 1;
for (i = 0; i < array.length / 2; i++, j--) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
于 2012-09-04T12:53:57.353 に答える
10
宿題とは、私からの疑似コードのみを意味します。とにかく、必要な言語を指定しないことで比較的簡単になりました:-)
これを選択した言語に変換します。
Set i1 to index of first element in array
Set i2 to index of last element in array
while i1 < i2:
Set temporary variable to element number i1
Set element number i1 to element number i2
Set element number i2 to temporary value
Add 1 to i1
Subtract 1 from i2
理想的な方法は、変数を追跡するために一枚の紙を使用して、頭の中でそのアルゴリズムを実際に実行することです。
- 配列内の各要素。
i1
とi2
。temporary variable
.
私はより単純なアルゴリズムのためにそれをする傾向があります。より難しいものには、デバッグ ステートメントを挿入して、コンピューターが面倒な作業を実行できるようにします。次のように一枚の紙から始めます。
i1 | i2 | tempvar | el[0] | el[1] | el[2] | el[3] | el[4] | el[5]
---+----+---------+-------+-------+-------+-------+-------+------
H e l l o !
手順を 1 つずつ実行し、各列を確認および/または変更します。その結果、コードを与えられるだけでなく、それがどのように機能するかを理解できるようになります。
于 2009-11-08T13:32:44.637 に答える
1
単一の変数を一時バッファーとして使用して、端を絶えず交換します。擬似コード:
temp = a[0]
a[0] = a[size - 1]
a[size - 1] = temp
等々。
于 2009-11-08T13:00:13.010 に答える
0
わざわざメモリ内の配列を逆にする必要はありません。逆方向に繰り返すだけです。
于 2009-11-08T13:22:23.387 に答える