新・明解Pythonで学ぶアルゴリズムとデータ構造
ソフトバンククリエイティブ
著者名:柴田望洋
はじめに
本書の構成
第1章 基本的なアルゴリズム
1-1 アルゴリズムとは
2値の最大値
条件判定と分岐
フローチャート(流れ図)の記号
1-2 繰返し
1からnまでの整数の総和を求める
2値のソートと2値の交換
繰返しの過程における条件判定(その1)
繰返しの過程における条件判定(その2)
繰返しの過程における条件判定(その3)
正の値の読込み
辺と面積が整数値である長方形
繰返しのスキップと複数のrangeの走査
構造化プログミング
多重ループ
第2章 データ構造と配列
2-1 データ構造と配列
配列の必要性
リストとタプル
インデックス式によるアクセス
スライス式によるアクセス
データ構造
2-2 配列
配列の要素の最大値を求める
配列の要素の最大値を求める関数の実装
アノテーションと型ヒント
再利用可能なモジュールの構築
モジュールのテスト
配列の要素の並びを反転する
基数変換
素数の列挙
第3章 探索
3-1 探索アルゴリズム
探索とキー
配列からの探索
3-2 線形探索
線形探索
番兵法
3-3 2分探索
2分探索
計算量
3-4 ハッシュ法
ソートずみ配列の操作
ハッシュ法
衝突
チェイン法
オープンアドレス法
第4章 スタックとキュー
4-1 スタック
スタックとは
スタックの実現
4-2 キュー
キューとは
単純な配列によるキューの実現
リングバッファによるキューの実現
第5章 再帰的アルゴリズム
5-1 再帰の基本
再帰とは
階乗値
ユークリッドの互除法
5-2 再帰アルゴリズムの解析
再帰アルゴリズムの解析
再帰アルゴリズムの非再帰的表現
5-3 ハノイの塔
ハノイの塔
5-4 8王妃問題
8王妃問題とは
王妃の配置
分岐操作
限定操作と分岐限定法
8王妃問題を解くプログラム
第6章 ソート
6-1 ソートとは
ソートとは
6-2 単純交換ソート(バブルソート)
単純交換ソート(バブルソート)
シェーカーソート(双方向バブルソート)
6-3 単純選択ソート
単純選択ソート
6-4 単純挿入ソート
単純挿入ソート
6-5 シェルソート
単純挿入ソートの特徴
シェルソート
6-6 クイックソート
クイックソートの概略
分割の手順
クイックソート
非再帰的クイックソート
枢軸の選択
時間計算量
6-7 マージソート
ソートずみ配列のマージ
マージソート
6-8 ヒープソート
ヒープ
ヒープソート
根を削除したヒープの再構築
ヒープソートへの拡張
配列のヒープ化
ヒープソートの時間計算量
6-9 度数ソート
度数ソート
第7章 文字列探索
7-1 力まかせ法
文字列探索
力まかせ法(単純法)
7-2 KMP法
KMP法
7-3 Boyer-Moore法
Boyer-Moore法
第8章 線形リスト
8-1 線形リストとは
線形リスト
線形リストの実現
8-2 線形リスト
ポイントによる線形リスト
線形リストを利用するプログラム
8-3 カーソルによる線形リスト
カーソルによる線形リスト
配列内の空き要素
フリーリスト
8-4 循環・重連結リスト
循環リスト
重連結リスト
循環・重連結リスト
循環・重連結リストの実現
循環・重連結リストを利用するプログラム
第9章 木構造と2分探索木
9-1 木構造
木とは
順序木と無順序木
順序木の探索
9-2 2分木と2分探索木
2分木
完全2分木
2分探索木
2分探索木の実現
2分探索木を利用するプログラム
章末問題の解答
参考文献
索引
謝辞
著者紹介