アルゴリズム

珠玉のプログラミング

ジョン・ベントリー
丸善出版

序文
本書について
コード
第1版の読者へ
第1版の謝辞
第2版の謝辞

第I部 はじめに
コラム1 真珠貝を開いて

  1. フレンドリーな会話
  2. 問題の正確な定義
  3. プログラムデザイン
  4. コードのスケッチ
  5. 原則
  6. 問題
  7. 読書案内

コラム2 「ああ(そうか)!」アルゴリズム

  1. 3つの問題
  2. 至るところで2分探索
  3. 「基本操作の繰り返し・組み合わせ」で解く
  4. まとめるためのソート
  5. 原則
  6. 問題
  7. 読書案内
  8. アナグラムプログラムの実装

コラム3 データで決まるプログラムの構造

  1. 調査プログラム
  2. 定型文のプログラム
  3. いろいろな配列の例
  4. データの構造化
  5. 特定のデータに関する協力なツール
  6. 原則
  7. 問題
  8. 読書案内

コラム4 正しいプログラムを書く

  1. 2分探索に挑戦
  2. プログラムを書く
  3. プログラムを理解する
  4. 原則
  5. プログラム検証の役割
  6. 問題
  7. 読書案内

コラム5 あと少しの事

  1. 疑似コードからCへ
  2. テスト
  3. 表明の技法
  4. テストの自動化
  5. 実行時間の計測
  6. 完全なプログラム
  7. 原則
  8. 問題
  9. 読書案内
  10. デバッグ

第II部 パフォーマンス
コラム6 パフォーマンスに関する考察

  1. あるケーススタディ
  2. デザインレベル
  3. 原則
  4. 問題
  5. 読書案内

コラム7 封筒の裏で・・・

  1. 基本的な素養
  2. パフォーマンスの評価
  3. 安全係数
  4. リトル(Little)の法則
  5. 原則
  6. 問題
  7. 読書案内
  8. 日常生活の速算

コラム8 アルゴリズムデザインのテクニック

  1. 問題と単純なアルゴリズム
  2. 2乗のアルゴリズム
  3. 分割して征服するアルゴリズム
  4. 走査アルゴリズム
  5. それがどういうことか
  6. 原則
  7. 問題
  8. 読書案内

コラム9 コードチューニング

  1. 典型的な話
  2. 応急手当的なチューニング
  3. 大手術的なコードチューニング - 2分探索で
  4. 原則
  5. 問題
  6. 読書案内

コラム10 メモリの節約

  1. キーポイントは単純さ
  2. 典型的な例
  3. データ空間でのテクニック
  4. プログラムコードが使うメモリの節約
  5. 原則
  6. 問題
  7. 読書案内
  8. 大きな節約の例

第III部 作品
コラム11 ソート

  1. 挿入ソート
  2. 簡単なクイックソート
  3. よりよいクイックソート
  4. 原則
  5. 問題
  6. 読書案内

コラム12 サンプリング問題

  1. 問題
  2. 1つの解
  3. デザイン空間
  4. 原則
  5. 問題
  6. 読書案内

コラム13 探索

  1. インターフェース
  2. 線形構造
  3. 2分探索木
  4. 整数のためのデータ構造
  5. 原則
  6. 問題
  7. 読書案内
  8. 実際の探索問題

コラム14 ヒープ

  1. データ構造
  2. 2つの重要な関数
  3. 順位キュー(プライオリティーキュー)
  4. ソートアルゴリズム
  5. 原則
  6. 問題
  7. 読書案内

コラム15 真珠の例

  1. 単語
  2. フレーズ
  3. テキストを生成する
  4. 原則
  5. 問題
  6. 読書案内

第1版のエピローグ
第2版のエピローグ
付録1 アルゴリズムのカタログ

  • 整列(ソート)
  • 探索(サーチ)
  • 他のセットのアルゴリズム
  • 文字列に関するアルゴリズム
  • ベクトル(1次の配列)と行列(2次の配列)に関するアルゴリズム
  • ランダムなもの
  • 数値アルゴリズム

付録2 評価クイズ
付録3 実行時間と使用メモリのコストモデル
付録4 コードチューニングのルール

  • 時間節約のためにメモリを使う
  • メモリ節約のために時間を使う
  • ループ
  • 論理
  • プロシージャ(関数)のルール
  • 表現

付録5 探索のためのC++クラス
問題のヒント
問題解答
参考文献
索引
訳者あとがき