1.やさしい
n 個の要素を持つ未ソートの配列に対する線形探索(linear search)の時間計算量(最悪の場合)は何ですか?
- AO(1)
- BO(n²)
- CO(log n)
- DO(n)
2.やさしい
0 から k の範囲の n 個の整数に対する計数ソート(counting sort)の実行時間は何ですか?
- AO(k log n)
- BO(n log n)
- CO(n²)
- DO(n + k)
3.やさしい
次の実行時間のうち、多項式時間はどれですか?
- AO(nⁿ)
- BO(n!)
- CO(2ⁿ)
- DO(n³)
4.ふつう
漸化式 T(n) = 2T(n − 1) + O(1) の解は何ですか?
- AO(n log n)
- BO(n²)
- CO(n)
- DO(2ⁿ)
5.ふつう
あるクイックソートは常に最初の要素をピボットに使います。どの入力で最悪の振る舞いを示しますか?
- Aすべての要素が異なる配列
- Bランダムな順序の配列
- C長さ 2 の配列
- Dすでにソートされている配列
6.ふつう
辺の重みが非負のグラフで、一つの始点からの最短経路を求めるアルゴリズムはどれですか?
- ADijkstra 法
- BKruskal 法
- Cどの場合でも Bellman–Ford が必要
- D深さ優先探索(DFS)
7.むずかしい
未ソートの配列から k 番目に小さい要素を選択することについて、正しい記述はどれですか?
- Aクイックセレクトは期待 O(n) で動作し、中央値の中央値法は最悪 O(n) を保証する
- Bクイックセレクトはピボットの片側だけで再帰するので、最悪でも O(log n) で動作する
- C選択は O(n²) でしか行えない
- D選択にはソートが必要なので、常に Ω(n log n) が必要である
8.むずかしい
単方向連結リストでは、二分探索が O(log n) 時間にならないのはなぜですか?
- A連結リストはソートできないから
- B二分探索には少なくとも 2 倍のメモリが必要だから
- C連結リストのノードでの比較は遅いから
- Dインデックスによる直接アクセスがないので、中央の要素に到達するのに O(n) ステップかかるから
解答
- 1. D · O(n)
- 2. D · O(n + k)
- 3. D · O(n³)
- 4. D · O(2ⁿ)
- 5. D · すでにソートされている配列
- 6. A · Dijkstra 法
- 7. A · クイックセレクトは期待 O(n) で動作し、中央値の中央値法は最悪 O(n) を保証する
- 8. D · インデックスによる直接アクセスがないので、中央の要素に到達するのに O(n) ステップかかるから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。