最大・最小
では、今度は配列の中の最大値を探すアルゴリズムです。合計の時の配列を使いましょう。
var num = new Array(5,8,9,3,2);
この配列の中の最大値は9です。これをプログラムで探すためにはどうしたらよいでしょうか?
最大値を求めるためには「最大値勝ち抜き戦」を行い最後まで勝ち残った人が勝利(最大値)になるようなプログラムを組みます。ボクシングのチャンピオンのような感じです。現在のチャンピオンに次々に挑戦者が挑戦しタイトルマッチを行います。勝者は新チャンピオンになります。最後までチャンピオンだったボクサーが最強のチャンピオンというわけです。
まず初代チャンピオンを決めましょう。最初の数num[0]を初代チャンピオンにします。
max = num[0];
チャンピオンを入れておく変数はmaxです。そして2番目以降の数がチャンピオンに挑戦します。
for(i=1;i<5;++i) { if( max < num[i] ){ max = num[i]; } }
for文は1からになっていることに注意してください。0番目は初代チャンピオンとしてすでに値を使っていますので、1番目からでいいわけです。そして、for文の中でifを使って現チャンピオン max と挑戦者 num[i] のどちらが大きいかを比較しています。挑戦者の方が大きければ新チャンピオン誕生です。
max = num[i] で挑戦者をチャンピオンに置き換えます。ループを抜けたときmaxには最大値が入っています。
●全プログラムリスト var num = new Array(5,8,9,3,2); max = num[0]; for(i=1;i<5;++i) { if( max > num[i] ){ max = num[i]; } } alert(max);
問題9-2
この例題で、逆に、最小値を求めてください。