珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造
珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造
丸善出版
著者:ジョン・ベントリー
訳者:小林健一郎
序文
本書について
コード
第1版の読者へ
第1版の謝辞
第2版の謝辞
目次
第I部 はじめに
コラム1 真珠貝を開いて
フレンドリーな会話
問題の正確な定義
プログラムデザイン
コードのスケッチ
原則
問題
読書案内
コラム2 「ああ(そうか)!」アルゴリズム
3つの問題
至るところで2分探索
「基本操作の繰り返し・組み合わせ」で解く
まとめるためのソート
原則
問題
読書案内
アナグラムプログラムの実装
コラム3 データで決まるプログラムの構造
調査プログラム
定型文のプログラム
いろいろな配列の例
データの構造化
特定のデータに関する協力なツール
原則
問題
読書案内
コラム4 正しいプログラムを書く
2分探索に挑戦
プログラムを書く
プログラムを理解する
原則
プログラム検証の役割
問題
読書案内
コラム5 あと少しの事
疑似コードからCへ
テスト
表明の技法
テストの自動化
実行時間の計測
完全なプログラム
原則
問題
読書案内
デバッグ
第II部 パフォーマンス
コラム6 パフォーマンスに関する考察
あるケーススタディ
デザインレベル
原則
問題
読書案内
コラム7 封筒の裏で・・・
基本的な素養
パフォーマンスの評価
安全係数
リトル(Little)の法則
原則
問題
読書案内
日常生活の速算
コラム8 アルゴリズムデザインのテクニック
問題と単純なアルゴリズム
2乗のアルゴリズム
分割して征服するアルゴリズム
走査アルゴリズム
それがどういうことか
原則
問題
読書案内
コラム9 コードチューニング
典型的な話
応急手当的なチューニング
大手術的なコードチューニング – 2分探索で
原則
問題
読書案内
コラム10 メモリの節約
キーポイントは単純さ
典型的な例
データ空間でのテクニック
プログラムコードが使うメモリの節約
原則
問題
読書案内
大きな節約の例
第III部 作品
コラム11 ソート
挿入ソート
簡単なクイックソート
よりよいクイックソート
原則
問題
読書案内
コラム12 サンプリング問題
問題
1つの解
デザイン空間
原則
問題
読書案内
コラム13 探索
インターフェース
線形構造
2分探索木
整数のためのデータ構造
原則
問題
読書案内
実際の探索問題
コラム14 ヒープ
データ構造
2つの重要な関数
順位キュー(プライオリティーキュー)
ソートアルゴリズム
原則
問題
読書案内
コラム15 真珠の例
単語
フレーズ
テキストを生成する
原則
問題
読書案内
第1版のエピローグ
第2版のエピローグ
付録1 アルゴリズムのカタログ
整列(ソート)
探索(サーチ)
他のセットのアルゴリズム
文字列に関するアルゴリズム
ベクトル(1次の配列)と行列(2次の配列)に関するアルゴリズム
ランダムなもの
数値アルゴリズム
付録2 評価クイズ
付録3 実行時間と使用メモリのコストモデル
付録4 コードチューニングのルール
時間節約のためにメモリを使う
メモリ節約のために時間を使う
ループ
論理
プロシージャ(関数)のルール
表現
付録5 探索のためのC++クラス
問題のヒント
問題解答
参考文献
索引
訳者あとがき