2020年度 機械 問18(b)
問題文
この問題の誤りを報告図は、n個の配列の数値を大きい順(降順)に並べ替えるプログラムのフローチャートである。次の(a)及び(b)の問に答えよ。
このプログラム実行時の読込み処理において、n=5とし、a[1]=3, a[2]=1, a[3]=2, a[4]=5, a[5]=4とする。フローチャート中のXで示される部分の処理は何回行われるか、正しいものを次の(1)〜(5)のうちから一つ選べ。

出典:第三種電気主任技術者 2020年度 機械 問18(b)
回答を選ぶ
選択すると結果を表示見直しを保存するには、設定で端末内の記録をONにしてください。
正答・解説を確認する
正答:(3)
要点
正解は(3)。初期配列 [3,1,2,5,4] をアルゴリズム通りに追うと、5を先頭へ移す過程などで交換が発生します。各 i,j の比較ごとに交換回数を数えると答えに到達します。
詳細解説を読む
正解は(3)です。
交換回数のトレース
初期データ: [3, 1, 2, 5, 4]
目的: 降順 [5, 4, 3, 2, 1]
・i=1 (値3):
・j=2(1): 3<1 False
・j=3(2): 3<2 False
・j=4(5): 3<5 True → 交換 [5, 1, 2, 3, 4] (回数1)
・j=5(4): 5<4 False
・確定: 5
・i=2 (値1):
・j=3(2): 1<2 True → 交換 [5, 2, 1, 3, 4] (回数2)
・j=4(3): 2<3 True → 交換 [5, 3, 1, 2, 4] (回数3)
・j=5(4): 3<4 True → 交換 [5, 4, 1, 2, 3] (回数4)
・確定: 5, 4
・i=3 (値1):
・j=4(2): 1<2 True → 交換 [5, 4, 2, 1, 3] (回数5)
・j=5(3): 2<3 True → 交換 [5, 4, 3, 1, 2] (回数6)
・確定: 5, 4, 3
・i=4 (値1):
・j=5(2): 1<2 True → 交換 [5, 4, 3, 2, 1] (回数7)
・確定: 5, 4, 3, 2, 1
合計交換回数は 7回 です。
以上より、選択肢(3)が正解です。