新・明解Javaで学ぶアルゴリズムとデータ構造


新・明解 Javaで学ぶアルゴリズムとデータ構造 (明解シリーズ)


ソフトバンククリエイティブ


著者:柴田望洋


はじめに
本書の構成
目次

第1章 基本的なアルゴリズム
1-1 アルゴリズムとは
三値の最大値
条件判定と分岐
フローチャート(流れ図)の記号
1-2 繰返し
1からnまでの整数の和を求める
正の値の読込み
多重ループ

第2章 基本的なデータ構造
2-1 配列
データ構造
配列
配列の要素の最大値を求める
配列の要素の並びを反転する
二つの配列の比較
基数変換
素数の列挙
2-2 多次元配列
多次元配列
年内の経過日数の計算
多次元配列の内部
2-3 クラス
クラスとは
クラスの配列

第3章 探索
3-1 探索アルゴリズム
探索とキー
配列からの探索
3-2 線形探索
線形探索
番兵法
3-3 2分探索
2分探索
計算量
Arrays.binarySearchによる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 マージソート
ソートずみ配列のマージ
マージソート
Arrays.sortによるクイックソートとマージソート
6-8 ヒープソート
ヒープ 
ヒープソート
根を削除したヒープの再構築
ヒープソートへの拡張
配列のヒープ化
ヒープソートの時間計算量
6-9 度数ソート
度数ソート

第7章 集合
7-1 集合とは
集合と要素
部分集合と真部分集合
集合の演算
7-2 配列による集合
配列による集合

第8章 文字列探索
8-1 力まかせ法
文字列探索
力まかせ法(単純法)
String.indexOfによる文字列探索
8-2 KMP法
KMP法
8-3 Boyer-Moore法
Boyer-Moore法

第9章 線形リスト
9-1 線形リストとは
線形リスト
線形リストの実現
9-2 ポインタによる線形リスト
ポインタによる線形リスト
線形リストを利用するプログラム
9-3 カーソルによる線形リスト
カーソルによる線形リスト
配列内の空き要素
フリーリスト
9-4 循環・重連結リスト
循環リスト
重連結リスト
循環・重連結リスト
循環・重連結リストの実現
循環・重連結リストを利用するプログラム

第10章 木 構 造
10-1 木構造
木とは
順序木と無順序木
順序木の探索
10-2 2分木と2分探索木
2分木
完全2分木
2分探索木
2分探索木の実現
2分探索木を利用するプログラム

おわりに
参考文献
索 引
謝 辞
著者紹介

書籍目次

Posted by shi-n