問60の正解: アテクノロジ系/アルゴリズムとプログラミング
手続 printArray は、配列 integerArray の要素を並べ替えて出力する。手続 printArray を呼び出したときの出力はどれか。ここで、配列の要素番号は1から始まる。 [プログラム] ○printArray() 整数型:n, m 整数型の配列: integerArray ← {2, 4, 1, 3} for (nを1から (integerArray の要素数 -1) まで1ずつ増やす) for (mを1から (integerArray の要素数-n) まで1 ずつ増やす) if (integerArray [m] > integerArray[m + 1]) integerArray[m] と integerArray [m + 1] の値を入れ替える endif endfor endfor integerArray の全ての要素を先頭から順にコンマ区切りで出力する
この設問が問うていること
疑似コードに記述されたバブルソートアルゴリズムを実行した結果を問う設問です。
ア1,2,3,4正解
選択肢アの解説: 初期状態の配列をバブルソートによって昇順に正しく並べ替えた結果(1,2,3,4)であり、適切です。
イ1,3,2,4
選択肢イの解説: ソート途中の状態であり、完全にソートされていないため不適切です。
ウ3,1,4,2
選択肢ウの解説: 要素がソートされておらず、順序が誤っているため不適切です。
エ4,3,2,1
選択肢エの解説: 降順(大きい順)に並べ替えた結果になっており、if文の条件(左の方が大きいときに入れ替える)から昇順になるはずであるため誤りです。
総合解説
提示された疑似コードは、隣り合う要素の大小関係を比較し、順序が逆であれば入れ替えることを繰り返す「バブルソート(隣接交換法)」アルゴリズムです。 ・初期状態の配列は `{2, 4, 1, 3}` です。 ・アルゴリズムを適用すると、最終的に昇順(小さい順)に並べ替えられます。 ・昇順に並べ替えた結果は `{1, 2, 3, 4}` となり、出力はコンマ区切りで `1, 2, 3, 4` です。 したがって、正解はaです。
AIAIにその場で質問(デモ応答)
こんな聞き方もできます(タップで質問)