Javaによるアルゴリズムとデータ構造
演習2-1の解答
右に示す出力を行うことによって逆転の経過が視覚的に分かるプログラムを作成せよ。
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-1
// 配列の要素に値を読み込んで並びを反転する
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[] a = new int[num]; // 長さnumの配列
for (int i = 0; i < num; i++) {
System.out.print("a[" + i + "] : ");
a[i] = stdIn.nextInt();
}
reverse(a); // 配列aの要素の並びを逆転
System.out.println("逆転が終了しました。");
}
}