36PM58|第36回 臨床工学技士国家試験 過去問

過去問題(分野未登録)第36回

配列aの初期値が a[0] a[1] a[2] a[3] a[4] 49 17 38 55 26 であるとき、図のフローチャートの手順を適用した後の配列aの値はどれか。

36PM58の問題画像
解答・解説を見る

正解: 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回ずつ比較します。

  1. n=0:49>17なので交換し、[17,49,38,55,26]。
  2. n=1:49>38なので交換し、[17,38,49,55,26]。
  3. n=2:49<55なので交換せず、[17,38,49,55,26]。
  4. 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])までお知らせください。確認して修正します。

関連問題

← 36PM5736PM59 →
学習アプリでこの問題を解く(記録・メモ・カード化)