電験三種 令和2年度(2020) 機械 問18(b) 過去問解説
【選択問題:問17と問18のどちらか一方を選んで解答する】
図は,$n$ 個の配列の数値を大きい順(降順)に並べ替えるプログラムのフローチャートである。次の(a)及び(b)の問に答えよ。
(b) このプログラム実行時の読込み処理において,$n=5$ とし,$\mathrm{a[1]}=3$,$\mathrm{a[2]}=1$,$\mathrm{a[3]}=2$,$\mathrm{a[4]}=5$,$\mathrm{a[5]}=4$ とする。フローチャート中の X で示される部分の処理は何回行われるか,正しいものを次の(1)〜(5)のうちから一つ選べ。

- (1) 3
- (2) 5
- (3) 7
- (4) 8
- (5) 10
答えと解説を見る
正解は(3)
解説
【考え方】i を1つずつ進め、そのたびに j を i+1 から n まで動かします。$\mathrm{a[i]} \lt \mathrm{a[j]}$ のとき(後ろの方が大きいとき)だけ、入れかえ(X)をします。
■1 i=1 のとき
はじめの並びは 3, 1, 2, 5, 4 です。
a[1]=3 を、1・2・5・4 と比べます。5 のとき(j=4)だけ大きいので、1回入れかえます。
並びは 5, 1, 2, 3, 4 になります。
■2 最後まで追う
i=2:a[2]=1 は、2・3・4 が来るたびに入れかわるので、3回です。並びは 5, 4, 1, 2, 3 です。
i=3:a[3]=1 は、2・3 と入れかわるので、2回です。並びは 5, 4, 3, 1, 2 です。
i=4:a[4]=1 は、2 と入れかわるので、1回です。並びは 5, 4, 3, 2, 1 です。
■3 回数を数える
$1 + 3 + 2 + 1 = 7$ 回
答えは(3)ピヨ。
i=2:a[2]=1 は、2・3・4 が来るたびに入れかわるので、3回です。並びは 5, 4, 1, 2, 3 です。
i=3:a[3]=1 は、2・3 と入れかわるので、2回です。並びは 5, 4, 3, 1, 2 です。
i=4:a[4]=1 は、2 と入れかわるので、1回です。並びは 5, 4, 3, 2, 1 です。
■3 回数を数える
$1 + 3 + 2 + 1 = 7$ 回
答えは(3)ピヨ。
出典:令和2年度(2020) 第三種電気主任技術者試験(電気技術者試験センター)機械 問18(b)