問題
実数aiが0<ai<1000(i=1,2,…,n)の範囲にあるとき,a1からanまでのn個の数値の中から最小値(min)と最大値(max)を求めることを目的として,次のようなアルゴリズムを考えた。しかし,このアルゴリズムには誤りがある。出力されたminとmaxに関する記述の組合せとして正しいものはどれか。
・minの値を1000とする。
・maxの値を0とする。
・iの値を1とする。
・i≤nならば{}内を繰り返す。
{・もしai<minならばminにaiを代入する。
そうでない場合,もしai>maxならばmaxにaiを代入する。
・iをi+1にする。
}
・minとmaxを出力する。
選択肢
min | max | |
① | 常に最小値になる。 | 常に最大値にならない。 |
② | 常に最小値になる。 | 最大値にならない場合がある。 |
③ | 最小値にならない場合がある。 | 常に最大値にならない。 |
④ | 最小値にならない場合がある。 | 最大値にならない場合がある。 |
⑤ | 最小値にならない場合がある。 | 常に最大値になる。 |
答え
②
解説
minについては、全てのaiについて最小値かどうかの判定を行っているため、常に最小値になります。
maxについては、ai<minの条件を満たさない場合のみ、値が代入される可能性がありますが、
最初にaiの中で最大のものが選ばれた場合、それが最小値にセットされるため、最大値が不適切になります。