C#で学ぶ
アルゴリズムとデータ構造

C MAGAZINE連載(2005年〜2006年)

結城浩

はじめに

こんにちは、結城浩です。

ここは、月刊誌『C MAGAZINE』で『C#で学ぶアルゴリズムとデータ構造』という連載を書いていたときのサポートページです。

この連載では、 基本的なアルゴリズムとデータ構造を紹介します。

プログラミング言語としては主にC#を用いますが、 C#に依存した話題にはしません。

各回の記事

第1回 (2005年5月号) : アルゴリズムとは何か、データ構造とは何か

アルゴリズムとデータ構造について解説します。

アルゴリズムとは / ユークリッドの互除法 / エラトステネスの篩 / データ構造とは

第2回 (2005年6月号) : 素因数分解

素因数分解のアルゴリズムを紹介します。

素因数分解とは / 素因数分解は難しい / 素因数分解はなぜ重要か / 試行割算法 / ロウ法 / 多倍長整数演算クラスライブラリ

第3回 (2005年7月号) : パリティ・チェックサム・グレイコード

符号化のアルゴリズムを紹介します。

パリティチェック / パリティの意味 / チェックサム / グレイコード / グレイコードの意義 / パリティとの比較 / グレイコードの応用

第4回 (2005年8月号) : 配列とO記法

もっとも基本的なデータ構造である配列と、アルゴリズムを考える上で大切なO記法という概念を学びます。

配列 / リニアサーチ / バイナリサーチ / スタック / キュー(リングバッファ)/ O記法

第5回 (2005年9月号) : リスト

リンクのつけかえで要素の挿入や削除が簡単に行えるリストを紹介します。

単方向リスト / 双方向リスト / LRUの実装 / スタックの実装 / キューの実装

第6回 (2005年10月号) : 二分探索木と二色木

高速な検索を行なうことができる二分探索木二色木を紹介します。

二分探索木 / 二色木 / Min / Successor / Search / Insert / Delete

第7回 (2005年11月号) : ハッシュテーブル(ハッシュ法)

キーから、小さな整数(ハッシュ値)を作り出し、それを使ってキーに対応する値を見つけ出すハッシュ法を紹介します。

ハッシュ法 / チェイン式 / オープンアドレス式 / 完全ハッシュ / 線形探査とダブルハッシング

第8回 (2005年12月号) : シャッフリングとサンプリング

擬似乱数を使って、データの順番を並べ替えるシャッフリングと、 サンプルを抽出するサンプリングを紹介します。

シャッフリング / 選択サンプリング / 上書きサンプリング / 貯蔵庫サンプリング

第9回 (2006年1月号) : 擬似乱数生成

擬似乱数生成のアルゴリズムを紹介します。

でたらめなアルゴリズムはよくない / 線形合同法 / M系列乱数 / メルセンヌ・ツイスター / かき混ぜ法による改良 / 一方向ハッシュ関数を使った擬似乱数生成

第10回 (2006年2月号) : ソート(1)

ソートのアルゴリズムを紹介します。

バブルソート / セレクションソート(選択ソート) / インサーションソート(挿入ソート) / シェルソート / ヒープソート / クイックソート

第11回 (2006年3月号) : ソート(2)

ソートのアルゴリズムを紹介します。

カウンティングソート(分布数えソート) / ラディックスソート(基数ソート) / 逆写像ソート / バケットソート

第12回 (2006年4月号) : 確率的アルゴリズム

確率的アルゴリズムを紹介します。

確率的アルゴリズム / トリープ / 本連載を振り返って