新・明解Javaで学ぶアルゴリズムとデータ構造
演習2-2の解答
5 10 73 2 -5 42
a[0]とa[5]を交換します。
42 10 73 2 -5 5
a[1]とa[4]を交換します。
42 -5 73 2 10 5
a[2]とa[3]を交換します。
42 -5 2 73 10 5
逆転が終了しました。 | 右に示すように、配列要素の並びの逆転の経過を逐一表示するプログラムを作成せよ。
|
// 演習2-2
// 配列の要素に値を読み込んで並びを反転する
import java.util.Scanner;
class ReverseArrayEx {
//--- 配列の要素a[idx1]とa[idx2]を交換 ---//
static void swap(int[] a, int idx1, int idx2) {
int t = a[idx1]; a[idx1] = a[idx2]; a[idx2] = t;
}
//--- 配列aの要素の値を表示 ---//
static void print(int[] a) {
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
//--- 配列aの要素の並びを逆転 ---//
static void reverse(int[] a) {
print(a);
for (int i = 0; i < a.length / 2; i++) {
System.out.println("a[" + i + "]とa[" + (a.length - i - 1) + "]を交換します。");
swap(a, i, a.length - i - 1);
print(a);
}
}
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("要素数は:");
int num = stdIn.nextInt(); // 要素数
int[] x = new int[num]; // 要素数numの配列
for (int i = 0; i < num; i++) {
System.out.print("x[" + i + "] : ");
x[i] = stdIn.nextInt();
}
reverse(x); // 配列aの要素の並びを逆転
System.out.println("要素の並びを逆転しました。");
for (int i = 0; i < num; i++)
System.out.println("x[" + i + "] = " + x[i]);
}
}