アルゴリズムとプログラミング
クイックソートで配列 [7, 2, 9, 4, 1, 5, 3] を昇順に整列する。先頭要素7をピボットとして1回の分割操作を行った後の状態として正しいものはどれか。
ア.左側に [2, 4, 1, 5, 3]、ピボット 7、右側に [9] が並ぶ正解
イ.左側に [2, 4, 1]、ピボット 7、右側に [9, 5, 3] が並ぶ
ウ.左側に [1, 2, 3, 4, 5]、ピボット 7、右側に [9] が並ぶ
エ.左側に [2, 9, 4]、ピボット 7、右側に [1, 5, 3] が並ぶ
解説
クイックソートは「将軍が軍を2つに分ける」ようなアルゴリズム。ピボットより小さい者は左、大きい者は右に分かれる。
なぜ ア が正解か
ピボット=7。配列の残り要素を比較: 2<7, 9>7, 4<7, 1<7, 5<7, 3<7。7より小さい要素: [2,4,1,5,3]、7より大きい要素: [9]。分割後は [2,4,1,5,3 | 7 | 9] の形になる。左側の順序は未ソートのまま。
出典: AI生成問題(学習用)