36PM58|第36回 臨床工学技士国家試験 過去問
配列aの初期値が a[0] a[1] a[2] a[3] a[4] 49 17 38 55 26 であるとき、図のフローチャートの手順を適用した後の配列aの値はどれか。

解答・解説を見る
正解: 4
正答
4
公式正答は 4 です。正答内容は 17、38、49、26、55 です。
この問題のポイント
フローチャートは、n=0、1、2、3の各1回ずつ、隣り合うa[n]とa[n+1]を比較し、左側が大きいときに交換します。バブルソートの1回の走査であり、配列全体を完全に並べ替えるまで繰り返す処理ではありません。
解説
初期配列は [49,17,38,55,26] です。フローチャートに従って左から隣接要素を1回ずつ比較します。
- n=0:49>17なので交換し、[17,49,38,55,26]。
- n=1:49>38なので交換し、[17,38,49,55,26]。
- n=2:49<55なので交換せず、[17,38,49,55,26]。
- n=3:55>26なので交換し、[17,38,49,26,55]。
したがって選択肢4です。昇順のバブルソートは1回の走査で最大値を末尾へ送るため、この走査後は最大値55の末尾位置が確定します。中間の17、38、49、26はまだ完全な昇順ではありません。
選択肢の確認
選択肢1:17、26、38、49、55
正答ではありません。 これは全要素を昇順に並べた配列ですが、本問のフローチャートは隣接比較を1走査するだけで、完全な整列は終了しません。
選択肢2:55、49、38、26、17
正答ではありません。 フローチャートは左が大きいときに交換するため、大きい値は右へ移動します。降順に整列する手順ではありません。
選択肢3:26、17、38、55、49
正答ではありません。 初期配列の先頭49はまず17と比較されて交換されるため、処理後の先頭は17であり、26にはなりません。
選択肢4:17、38、49、26、55
正答です。 隣接比較と1回ずつの交換を左から右へ実行すると、[49,17,38,55,26]から[17,38,49,26,55]となります。
選択肢5:49、38、55、26、17
正答ではありません。 最初の比較で49>17なのでこの二値は必ず交換され、先頭は17になります。先頭49を保つこの配列は手順と一致しません。
覚えるポイント
- 左が大きいと交換する昇順バブルソートの1走査では、最大値が末尾へ移動する。
- 本問の変化は[49,17,38,55,26]→[17,49,38,55,26]→[17,38,49,55,26]→[17,38,49,26,55]。
- 1走査で末尾55の位置は確定するが、配列全体の昇順整列はまだ完了しない。
掲載内容は受験学習用に編集しています。正式な正答・採点上の取扱いは、各試験実施機関の発表を優先してください。 情報の確認方法と訂正窓口は編集方針に掲載しています。 本サービスは診断・治療・臨床判断を目的とするものではありません。
問題文・正答・解説に誤りを見つけたら、この問題の誤りを報告する([email protected])までお知らせください。確認して修正します。