2017年度 機械 問18(b)
問題文
この問題の誤りを報告図のフローチャートで表されるアルゴリズムについて、次の(a)及び(b)の問に答えよ。変数は全て整数型とする。
このアルゴリズム実行時の読込み処理において, n=5とし、a[1]=2, a[2]=3, a[3]=8, a[4]=6, a[5]=5とする。
フローチャート中のXで示される部分の処理は何回行われるか、正しいものを次の(1)~(5)のうちから一つ選べ。
(注:フローチャートは配列要素を昇順に並べ替えるバブルソートのようなアルゴリズムを示している。
ループ構造:
外側ループ i = 1 to n-1
内側ループ j = i+1 to n
比較:a[i] > a[j] ならば 交換(X部分)
)

出典:第三種電気主任技術者 2017年度 機械 問18(b)
回答を選ぶ
選択すると結果を表示見直しを保存するには、設定で端末内の記録をONにしてください。
正答・解説を確認する
正答:(1)
要点
正解は(1)。処理X(交換処理 swap)が行われる回数をトレースする。条件 a[i] > a[j] が成立したときに交換が発生する。
詳細解説を読む
正解は(1)です。
処理X(交換処理 swap)が行われる回数をトレースする。
条件 a[i] > a[j] が成立したときに交換が発生する。
・i = 1 (a[1]=2):
・j=2 (3), j=3 (8), j=4 (6), j=5 (5) と比較。2より小さいものはないため交換なし。
・i = 2 (a[2]=3):
・j=3 (8), j=4 (6), j=5 (5) と比較。3より小さいものはないため交換なし。
・i = 3 (a[3]=8):
・j=4 (a[4]=6): 8 > 6 成立。交換 aは [2, 3, 6, 8, 5] (1回目)
・j=5 (a[5]=5): 現在のa[3](6) と比較。6 > 5 成立。交換 aは [2, 3, 5, 8, 6] (2回目)
・ここで a[3] は 5 で確定。
・i = 4 (a[4]=8):
・j=5 (a[5]=6): 8 > 6 成立。交換 aは [2, 3, 5, 6, 8] (3回目)
合計交換回数は 3回 である。
以上より、選択肢(1)が正解です。