C MAGAZINE連載(2005年〜2006年)
結城浩
こんにちは、結城浩です。
ここは、月刊誌『C MAGAZINE』で『C#で学ぶアルゴリズムとデータ構造』という連載を書いていたときのサポートページです。
この連載では、 基本的なアルゴリズムとデータ構造を紹介します。
プログラミング言語としては主にC#を用いますが、 C#に依存した話題にはしません。
アルゴリズムとデータ構造について解説します。
アルゴリズムとは / ユークリッドの互除法 / エラトステネスの篩 / データ構造とは
素因数分解のアルゴリズムを紹介します。
素因数分解とは / 素因数分解は難しい / 素因数分解はなぜ重要か / 試行割算法 / ロウ法 / 多倍長整数演算クラスライブラリ
符号化のアルゴリズムを紹介します。
パリティチェック / パリティの意味 / チェックサム / グレイコード / グレイコードの意義 / パリティとの比較 / グレイコードの応用
もっとも基本的なデータ構造である配列と、アルゴリズムを考える上で大切なO記法という概念を学びます。
配列 / リニアサーチ / バイナリサーチ / スタック / キュー(リングバッファ)/ O記法
リンクのつけかえで要素の挿入や削除が簡単に行えるリストを紹介します。
単方向リスト / 双方向リスト / LRUの実装 / スタックの実装 / キューの実装
高速な検索を行なうことができる二分探索木と二色木を紹介します。
二分探索木 / 二色木 / Min / Successor / Search / Insert / Delete
キーから、小さな整数(ハッシュ値)を作り出し、それを使ってキーに対応する値を見つけ出すハッシュ法を紹介します。
ハッシュ法 / チェイン式 / オープンアドレス式 / 完全ハッシュ / 線形探査とダブルハッシング
擬似乱数を使って、データの順番を並べ替えるシャッフリングと、 サンプルを抽出するサンプリングを紹介します。
シャッフリング / 選択サンプリング / 上書きサンプリング / 貯蔵庫サンプリング
擬似乱数生成のアルゴリズムを紹介します。
でたらめなアルゴリズムはよくない / 線形合同法 / M系列乱数 / メルセンヌ・ツイスター / かき混ぜ法による改良 / 一方向ハッシュ関数を使った擬似乱数生成
ソートのアルゴリズムを紹介します。
バブルソート / セレクションソート(選択ソート) / インサーションソート(挿入ソート) / シェルソート / ヒープソート / クイックソート
ソートのアルゴリズムを紹介します。
カウンティングソート(分布数えソート) / ラディックスソート(基数ソート) / 逆写像ソート / バケットソート
確率的アルゴリズムを紹介します。
確率的アルゴリズム / トリープ / 本連載を振り返って