データ構造とアルゴリズム
配列 5, 3, 8, 1, 4 をバブルソートで昇順に並べる。先頭から隣どうしを比べ、左の方が大きければ交換する操作を末尾まで1回行った(1パス)後の配列はどれか。
- A1, 3, 8, 5, 4
- B3, 5, 1, 4, 8
- C1, 3, 4, 5, 8
答えと解説を見る
正解:B. 3, 5, 1, 4, 8
5と3を交換して 3, 5, 8, 1, 4、5と8はそのまま、8と1を交換して 3, 5, 1, 8, 4、8と4を交換して 3, 5, 1, 4, 8 になります。1パスで最大値の8が末尾まで運ばれて位置が確定し、次のパスでは残りの4つを同じように並べます。1, 3, 8, 5, 4 は最小値を探して先頭と交換する選択ソートの1パス後の配列、1, 3, 4, 5, 8 はすべて並べ終えた結果です。
- A. 最小値の1を先頭と交換する、選択ソートの1パス後の配列です。
- B. 正しい。隣どうしの交換で、最大値の8が末尾まで移動します。
- C. 並べ替えが終わった最終結果で、1パスではここまで進みません。