アルゴリズムとプログラミング

ITパスポート試験アルゴリズムとプログラミング」の問題

テクノロジ系アルゴリズムとプログラミング計算問題難易度:hard
手続 sort は,要素数が2以上の整数型の配列を引数 numberArray で受け取り,その要素を昇順に並べ替えた結果を出力する。手続 sort の動作確認のために,処理の途中でjの値と workArray の全ての要素を出力する。配列 numberArray を{3,5,1,2,4}とし,手続 sort を sort(numberArray) として呼び出したとき,jの値が3と出力された直後の workArray の全ての要素の出力はどれか。ここで,配列の要素番号は1から始まる。 〔プログラム〕 ○sort(整数型の配列: numberArray)  整数型: minIndex, j, k  整数型の配列: workArray ← numberArray // 配列の複製を作る  for (j を 1 から (workArray の要素数 − 1) まで 1 ずつ増やす)   // j番目から末尾までの要素の中で最も小さい値をもつ要素の要素番号を一つ求める   minIndex ← j   for (k を (j + 1) から workArray の要素数 まで 1 ずつ増やす)    if (workArray[k] が workArray[minIndex] より小さい)     minIndex ← k    endif   endfor   workArray[j] と workArray[minIndex] の値を入れ替える   // j の値と workArray の全要素をコンマ区切りで出力する   jの値を出力する   workArray の全要素を出力する  endfor  workArray の全要素を出力する
1,2,3,4,5
1,2,3,5,4
4,5,3,2,1
5,4,3,2,1
正解
1,2,3,5,4

これは選択ソートで,各回j番目以降の最小値をj番目に置く。初期{3,5,1,2,4}。j=1:範囲全体の最小1(4番目)とswap→{1,5,3,2,4}を出力。j=2:範囲[5,3,2,4]の最小2(4番目)とswap→{1,2,3,5,4}を出力。j=3:範囲[3,5,4]の最小は3(3番目)で自分自身とのswapとなり変化なし→{1,2,3,5,4}を出力。よってj=3直後の出力は1,2,3,5,4でイが正解である。

?選択肢ごとの解説

ア ×1,2,3,4,5は完全に整列した最終状態で,これはj=4の処理後(5番目は自動確定)に得られる。j=3直後はまだ4番目以降が整列しておらず5と4が逆のままであ…
イ ○これは選択ソートで,各回j番目以降の最小値をj番目に置く。初期{3,5,1,2,4}。j=1:範囲全体の最小1(4番目)とswap→{1,5,3,2,4}を出力。j=2:範囲[5,3,2,4]の最小2(4番目)とswap→{1,2,3,5,4}を出力。j=3:範囲[3,5,4]の最小は3(3番目)で自分自身とのswapとなり変化なし→{1,2,3,5,4}を出力。よってj=3直後の出力は1,2,3,5,4でイが正解である。
ウ ×4,5,3,2,1は降順に近い並びで,選択ソート(昇順)の途中経過として現れない。比較条件を逆(大きい値を選ぶ)に誤読した場合の誤答である。
エ ×5,4,3,2,1は完全な降順で,昇順選択ソートでは生じない。アルゴリズムの並べ替え方向を取り違えた場合の誤答である。
この問題の「深掘り・誤答の完全解説・試験のコツ・覚え方」はアプリで。

ITパスポート試験の全問を、一問ごとにAIの8-ways解説つきで。SRS暗記カード・全真模試・弱点診断まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · ITパスポート試験 · itpass-r8k-q67

【ITパスポート試験】アルゴリズムとプログラミングの問題と解答・解説|ukamiru 過去問