参考リソース

データ構造操作の複雑度早見表

データ構造挿入削除検索走査
配列O(n) 中間 / O(1) 末尾O(n) 中間 / O(1) 末尾O(1) インデックス / O(n) 値O(n)
単方向リストO(1) 先頭 / O(n) 末尾O(1) 先頭 / O(n) 指定位置O(n)O(n)
双方向リストO(1)(位置が既知の場合)O(1)(位置が既知の場合)O(n)O(n)
栈O(1)O(1)——
キューO(1)O(1)——
優先度付きキュー(ヒープ)O(log n)O(log n)——
二分探索木(BST)O(log n)~O(n)O(log n)~O(n)O(log n)~O(n)O(n)
ハッシュテーブルO(1) 平均O(1) 平均O(1) 平均—
堆O(log n)O(log n)O(1) ヒープの先頭—
图O(1) 隣接リストO(E)O(V+E) DFS/BFSO(V+E)

ソートアルゴリズム早見表

アルゴリズム平均複雑度最悪複雑度空間安定一言で言うと
バブルO(n²)O(n²)O(1)であるシンプルだが遅い、教育向き
選択O(n²)O(n²)O(1)否交換回数が最小
挿入O(n²)O(n²)O(1)である小規模またはほぼ整列済みの場合に最適
クイックO(n log n)O(n²)O(log n)否汎用の第一選択、パーティションの考え方が巧妙
マージO(n log n)O(n log n)O(n)である性能は安定しているが余分なスペースが必要
ヒープO(n log n)O(n log n)O(1)否インプレースソートで空間効率が最良
シェルO(n^1.3)O(n²)O(1)否挿入ソートの改良版

ビッグオー複雑度ランキング

複雑度n=10n=1000n=1000000評価
O(1)111最良
O(log n)~3~10~20極めて良好
O(n)1010001000000許容可能
O(n log n)~30~10000~20000000まずまず
O(n²)100100000010¹²注意が必要
O(2ⁿ)1024天文学的な数字不可能使えない

おすすめ学習リソース

カテゴリ名称説明
定番教科書『データ構造(C言語版)』嚴蔚敏国内大学の標準的な教科書で、体系が整っている
定番教科書『アルゴリズムイントロダクション』(CLRS)アルゴリズム分野の権威ある参考書で、深く体系的
オンライン演習LeetCode (leetcode.com)大量のアルゴリズム問題、面接対策の第一選択
オンライン演習牛客网 (nowcoder.com)国内の面接練習プラットフォーム、新卒採用準備に最適
可視化ツールVisualgo (visualgo.net)アルゴリズムの可視化、実行プロセスの理解を助ける
オンラインコンパイラCompiler Explorer (godbolt.org)Cコードのコンパイル後のアセンブリを確認し、低レベルを理解する
その他の拡張