最大値の選択 ―― 復習
問題1
整数の配列を宣言し、ランダムに初期化しておく。 この配列の要素の最大値を探し、配列の最後の要素と交換する プログラムを書きなさい。
たとえば、配列を
回答例
入れ替えをするには、最大値が配列のどこにあったかを憶えておく必要があります。
最大値の見付かった時の添字が maxindex に保存されているので、 最大値は area[maxindex] という形でいつでも参照可能です。
最大値と配列の最後の要素を交換する際に、 一時的な変数が必要になります。
a の内容と b の内容を交換する場合、 いきなり b = a; とやると
b に入っていた 200 が消えてしまいます。
temp という新たな変数を用意して、 b の値を退避しておき、 最後に、temp から a に戻せば、2値の交換が終わります。
アルゴリズム
プログラム Exchange2.java
ソート
整数の配列を宣言し、ランダムに初期化しておく。 この配列の要素を小さい順に並べなおして表示しなさい。
たとえば、配列を
問題1で最大値を配列の最後に移動できるようになりました。 配列の最後を無視して、先頭からはじめて最後の1つ手前までの要素に対して同じことをやれば、 配列の中の大きいほうから2つが配列の最後に順にならびます。 最大値を見付けて最後に移動するという操作を繰り返してソートをしましょう。
問題1の回答例のアルゴリズムを手直しします。黒い部分が今回の追加部分です。 緑の部分が問題1のアルゴリズムで、赤字部分が変更箇所です。
アルゴリズム
2.と 6. で外側の for ループができます。 3.〜5.のインデンテーションを忘れずに。
プログラム Sort2.java
Internet Explorer 6.0 でのみ動作確認をしています。 Netscape では動きません−−調査中です。