はじめの順番
まず読む4ページ
計算量、Bubble Sort(バブルソート)、Selection Sort(選択ソート)、Binary Search(二分探索)の順で進むと、増え方と処理の違いをまとめて掴めます。
Visual Algorithm Primer
初学者向けの静的アルゴリズム教材
このサイトは、名前だけ知っている状態から抜けるための教材です。まず動きを見て、そのあとで計算量や擬似コードを対応づけます。
Guide
最初はこの4ページで十分です。増え方、比較、交換、探索の基礎がここで揃います。
目次
Paths
アルゴリズム名から入らなくても学べるように、目的別の入口を用意します。
はじめの順番
計算量、Bubble Sort(バブルソート)、Selection Sort(選択ソート)、Binary Search(二分探索)の順で進むと、増え方と処理の違いをまとめて掴めます。
比較して学ぶ
隣接交換、選択、挿入、半分ずつ分けて進める方法、ヒープまで、何を基準に並べ替えるかで比較します。
前提を固める
再帰、メモ化、安定ソート、データ構造へ進み、個別アルゴリズムの前提知識を固めます。
Catalog
学習順ではなく、テーマから直接ページを探すための一覧です。
Category
先に読んでおくと、個別ページの理解が早くなる概念ページです。
Category
並べ替えの発想ごとの差を見比べるためのページ群です。
左から隣接要素を比べ、逆順なら交換します。1 パス終わるごとに未確定部分の最大値が右端へ確定します。
Selection Sort(選択ソート)未整列領域を最後まで見て最小値を選び、先頭と交換します。交換回数は少なめですが、比較回数は基本的に O(n²) です。
Insertion Sort(挿入ソート)新しい要素を 1 つ取り出し、左側の整列済み領域の適切な位置へ挿入します。ほぼ整列済みの入力では強いアルゴリズムです。
Merge Sort(マージソート)大きい問題を半分ずつの小さい問題に分けて進める方法です。半分ずつ整列して、最後に 2 つの整列済み配列をまとめます。
Quick Sort(クイックソート)1 つ基準値を決めて、それより小さいグループと大きいグループに分けながら進める方法です。基準値の選び方に偏りが出ると遅くなります。
Heap Sort(ヒープソート)二分ヒープを使って最大値を何度も末尾へ送ります。比較的安定した O(n log n) ですが、安定ソートではありません。
Counting Sort(計数ソート)要素の取りうる値の範囲が狭いときに強いソートです。各値が何回出たかを数え、そこから整列済み列を組み立てます。
Radix Sort(基数ソート)各桁を下位から順に安定ソートしていく方法です。桁数が短い整数列などで有効です。
Category
どこまで見るか、どう絞るか、探索の基本を学ぶページ群です。
Category
アルゴリズムを支える基本構造を先に把握するためのページ群です。
LIFO の基本データ構造です。関数呼び出し、undo、式の評価など幅広く出てきます。
Queue(キュー)FIFO の基本データ構造です。待ち行列、BFS、ジョブ処理などに出てきます。
Linked List(連結リスト)配列と違い、要素がメモリ上で連続していなくてもつながれます。挿入・削除の考え方を学ぶ入口になります。
Binary Search Tree(二分探索木)二分探索木は、各ノードで左部分木の値が小さく、右部分木の値が大きい構造です。探索・挿入の考え方を木として学べます。
Binary Heap(二分ヒープ)ヒープは親子の大小関係だけを保つ構造です。最小値・最大値の取り出しが速く、優先度付きキューの実装に使われます。
Union-Find(ユニオンファインド)Disjoint Set Union とも呼ばれます。連結成分の管理や Kruskal 法で重要な役割を持ちます。
Category
頂点、辺、距離、到達順序を扱うページ群です。
Category
部分問題、再帰、表の使い方を学ぶページ群です。
再帰で Fibonacci 数をそのまま求めると、同じ計算を何度も繰り返します。メモ化や DP の必要性を示す代表例です。
0/1 Knapsack(ナップサック問題)容量制約の下で価値の合計を最大化する問題です。DP テーブルを使うと、部分問題の積み重ねで考えられます。
LCS(最長共通部分列)最長共通部分列は、2 つの列に共通して現れる順序付き要素列の最長長を求めます。DP テーブルが典型です。
Edit Distance(編集距離)1 文字の挿入、削除、置換で文字列を変換する最小コストを求めます。表の各マスで 3 通りを比較します。
Tower of Hanoi(ハノイの塔)ハノイの塔は再帰の教材として定番です。大きい円盤を動かす前後に、小さい円盤の塔を丸ごと移す発想が見えます。