1.やさしい
順序が誤っている隣接要素を繰り返し交換するソートアルゴリズムはどれですか?
- Aクイックソート(Quicksort)
- Bマージソート(Merge sort)
- Cヒープソート(Heap sort)
- Dバブルソート(Bubble sort)
2.やさしい
選択ソート(selection sort)はどのように動作しますか?
- A順序が逆になっている隣り合う要素を繰り返し交換する
- B配列を半分に分け、それらをマージする
- C未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- Dシフトによって各要素を成長していくソート済み部分に挿入する
3.やさしい
二分探索は入力に何を要求しますか?
- A配列が正の数だけを含むこと
- B配列の要素が 1000 個以下であること
- C配列の長さが 2 のべき乗であること
- D配列がソートされていること
4.ふつう
動的計画法がマージソートを実質的に高速化しないのはなぜですか?
- A部分問題が重複しないので、再利用するものがないから
- B動的計画法はグラフ問題にしか使えず、配列には使えないから
- Cマージソートはすでに O(n) だから
- Dマージソートには再帰的な構造がないから
5.ふつう
プリム法は最小全域木をどのように構築しますか?
- Aすべての辺を重みでソートし、森の中で閉路をつくる場合を除いて 1 本ずつ加える
- B幅優先探索を実行し、BFS 木を残す
- C閉路がなくなるまで最も高い辺を取り除く
- D開始頂点から 1 本の木を成長させ、木から出る最も安い辺を加える
6.ふつう
満杯になると容量を2倍にする動的配列に要素を追加する操作の償却(amortised)時間計算量は何ですか?
- AO(log n)
- BO(n)
- CO(n²)
- DO(1)
7.むずかしい
little-o 記法について正しい記述はどれですか?
- A2n はゆっくり増加するので、2n = o(n)
- Bn = o(n²) だが、n は o(n) ではない
- Cどの関数も自分自身の little-o なので、n = o(n)
- Dn² = o(n)
8.むずかしい
log(n!) について正しい評価はどれですか?
- AΘ(n)
- BΘ(log n)
- CΘ(n log n)
- DΘ(n²)
解答
- 1. D · バブルソート(Bubble sort)
- 2. C · 未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- 3. D · 配列がソートされていること
- 4. A · 部分問題が重複しないので、再利用するものがないから
- 5. D · 開始頂点から 1 本の木を成長させ、木から出る最も安い辺を加える
- 6. D · O(1)
- 7. B · n = o(n²) だが、n は o(n) ではない
- 8. C · Θ(n log n)
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。