正答4
解説
正解は4です。
流れ図の処理内容から、どの整列アルゴリズムかを見分ける問題です。
図では、ループ1でiを1からn−1まで1ずつ増やします。
その内側のループ2で、jをnからi+1まで1ずつ減らします。
ループ2の中ではA[j]とA[j−1]を比べ、A[j]の方が小さいときだけ、変数wを使って二つの値を入れ替えます。
つまり、隣り合う要素を比べて逆順なら交換する処理を、配列の末尾から先頭へ向かって繰り返しています。
1回のループ2で最小の値がA[i]まで運ばれ、先頭から順に確定していきます。
【選択肢別解説】
1:× クイックソートは、基準値(ピボット)より小さいグループと大きいグループに分ける処理を再帰的に繰り返す方法で、図のような隣接交換ではありません。
2:× 選択ソートは、未整列部分の最小値を探し終えてから、先頭の要素と1回だけ交換する方法です。
図では、A[j]がA[j−1]より小さいとわかるたびにその場で交換しているので該当しません。
3:× 挿入ソートは、整列済みの部分に新しい要素を一つずつ取り込み、適切な位置へ挿入していく方法です。
挿入位置が見つかった時点で内側の処理を打ち切ります。
図では、内側のループ2が毎回、配列の末尾nからi+1までの未整列部分全体を最後までたどるので、挿入ソートではありません。
4:○ 隣接する要素A[j−1]とA[j]を比較し、逆順なら交換する操作を繰り返すのは、バブルソートの特徴です。
【ポイント】
バブルソートは、泡が浮かび上がるように最小値(または最大値)が端へ移動することから名付けられました。
計算量は、比較回数がn(n−1)/2回となるO(n^2)です。