1.やさしい
n 個の数からなる未ソートの配列で最大値を見つける時間計算量は何ですか?
- AO(1)
- BO(n log n)
- CO(log n)
- DO(n)
2.やさしい
選択ソート(selection sort)はどのように動作しますか?
- A順序が逆になっている隣り合う要素を繰り返し交換する
- B配列を半分に分け、それらをマージする
- C未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- Dシフトによって各要素を成長していくソート済み部分に挿入する
3.やさしい
ピボットを選び、配列を小さい要素と大きい要素に分割するソートアルゴリズムはどれですか?
- A挿入ソート
- Bクイックソート(quicksort)
- Cマージソート
- Dバブルソート
4.ふつう
多くのライブラリのソート関数が、非常に小さな部分配列では挿入ソートに切り替えるのはなぜですか?
- A再帰アルゴリズムは 10 要素未満の配列を扱えないから
- B大きな入力では、挿入ソートは他のどのソートアルゴリズムよりメモリが少なくて済むから
- C挿入ソートは最悪の場合 O(n log n) だから
- D挿入ソートはオーバーヘッドが小さく、小さな入力やほぼソート済みの入力で速いから
5.ふつう
ボトムアップの表を使って n 番目のフィボナッチ数を計算する時間計算量は何ですか?
- AO(n²)
- BO(n)
- CO(log n)
- DO(2ⁿ)
6.ふつう
漸化式 T(n) = T(n/2) + O(1) の解は何ですか?
- AO(n)
- BO(1)
- CO(log n)
- DO(n log n)
7.むずかしい
挿入ソートはソート済みの入力に対して O(n) で動作します。これは比較ソートの Ω(n log n) の下界と矛盾しますか?
- Aはい。したがって下界は誤りである
- Bいいえ。挿入ソートは比較ソートではないから
- Cはい。ただし 100 より短い配列の場合に限る
- Dいいえ。下界はすべての入力にわたる最悪の場合に適用されるのであって、すべての入力に適用されるわけではない
8.むずかしい
最短単純路は多項式時間で見つけられます。一般のグラフで 2 頂点間の最長単純路を見つけることについて、何が知られていますか?
- A重みの符号を反転すればダイクストラ法で解ける
- B常に O(V + E) で解ける
- C決定不能である
- DNP 困難である
解答
- 1. D · O(n)
- 2. C · 未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- 3. B · クイックソート(quicksort)
- 4. D · 挿入ソートはオーバーヘッドが小さく、小さな入力やほぼソート済みの入力で速いから
- 5. B · O(n)
- 6. C · O(log n)
- 7. D · いいえ。下界はすべての入力にわたる最悪の場合に適用されるのであって、すべての入力に適用されるわけではない
- 8. D · NP 困難である
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。