Javaアルゴリズム+データ構造完全制覇
Javaアルゴリズム+データ構造完全制覇 (標準プログラマーズライブラリ)
技術評論社
著者:(有)オングス
監修:杉山貴章、後藤大地
はじめに
本書の概要
目次
Chapter 1 イントロダクション
1.1 データ構造とアルゴリズム
1.2 なぜデータ構造とアルゴリズムを学ぶのか
1.2.1 プログラミングのあらゆる場所に現れるデータ構造とアルゴリズム
1.2.2 すばやくソースコードを書くために
1.2.3 共同でプログラミングをするために
1.2.4 きれいなソースコードを書くために
1.2.5 理解しやすいソースコードを書くために
1.3 オブジェクト指向
1.3.1 オブジェクト指向とは
1.3.2 オブジェクト指向プログラミング
1.3.3 オブジェクト指向分析/設計
1.3.4 データ構造とアルゴリズムはオブジェクト?
1.4 Java言語
1.4.1 特徴
1.4.2 ポインタがない?
1.4.3 メモリリークがない?
1.4.4 初心者に優しい?
1.4.5 他の言語との違い
1.4.6 利点と欠点
1.4.7 Java言語の習得を進めるには
1.4.8 O記法(オーダー記法,ビッグオー記法)
Chapter 2 データ構造とアルゴリズム〜解説編
2.1 配列
2.1.1 配列とは
2.1.2 データの探索
2.1.3 データの挿入
2.1.4 データの削除
2.1.5 配列の例〜コインロッカー
2.2 スタック
2.2.1 スタック
2.2.2 積む(データの挿入,プッシュ)
2.2.3 おろす(データの取得,ポップ)
2.2.4 スタックの例
2.3 待ち行列
2.3.1 待ち行列
2.3.2 データの挿入
2.3.3 データの取得
2.3.4 待ち行列の例(銀行窓口)
2.4 連結リスト
2.4.1 連結リストの構造
2.4.2 データの探索
2.4.3 データの挿入
2.4.4 データの削除
2.4.5 双方向連結リスト
2.5 二分木
2.5.1 木構造
2.5.2 二分木
2.5.3 二分探索木
2.5.4 ノードの探索
2.5.5 木の走査
2.5.6 ノードの挿入
2.5.7 ノードの削除
2.6 ハッシュテーブル
2.6.1 ハッシュ関数の例
2.6.2 衝突
2.6.3 ハッシュテーブルの欠点
2.7 整列
2.7.1 バブルソート
2.7.2 クイックソート
2.8 再帰
2.8.1 再帰の例(両替機)
2.8.2 再帰の例(書類作成)
2.8.3 数学的帰納法
2.8.4 再帰の利点
Chapter 3 データ構造とアルゴリズム〜実践編
3.1 配列
3.1.1 Java言語の配列
3.1.2 配列を実現するクラスの作成
3.1.3 データの挿入
3.1.4 データの探索
3.1.5 データの削除
3.1.6 すべてのデータを表示
3.1.7 Arrayクラスの利用
3.1.8 Java言語の配列はオブジェクト?
3.2 スタック
3.2.1 スタックを実現するクラスの作成
3.2.2 積む(データの挿入/プッシュ)
3.2.3 おろす(データの取得/ポップ)
3.2.4 スタックの内部の表示
3.2.5 MyStackクラスの利用
3.3 待ち行列
3.3.1 待ち行列の実現
3.3.2 待ち行列を実現するクラスの作成
3.3.3 データの挿入
3.3.4 データの取得
3.3.5 待ち行列の内部の表示
3.3.6 Queueクラスの利用
3.4 連結リスト
3.4.1 連結リストの実現
3.4.2 要素オブジェクトの作成
3.4.3 連結リストを実現するクラスの作成
3.4.4 データの挿入
3.4.5 データの探索
3.4.6 データの取得
3.4.7 リストの長さを取得
3.4.8 データの削除
3.4.9 リスト内のデータの表示
3.4.10 MyLinkedListクラスの利用
3.4.11 双方向連結リスト
3.5 二分木
3.5.1 二分木の実現
3.5.2 ノードオブジェクトの作成
3.5.3 データオブジェクトの作成
3.5.4 二分探索木を実現するクラスの作成
3.5.5 ノードの挿入
3.5.6 ノードの探索
3.5.7 ノードの削除
3.5.8 木の全ノードを表示する
3.5.9 BinarySearchTreeクラスの利用
3.6 ハッシュテーブル
3.6.1 ハッシュテーブルの実装
3.6.2 データオブジェクトの作成
3.6.3 ハッシュ関数
3.6.4 衝突を考慮しないハッシュテーブル
3.6.5 分離連鎖法を用いたハッシュテーブル
3.6.6 空き番地法を用いたハッシュテーブル
3.7 整列
3.7.1 バブルソート
3.7.2 クイックソート
3.8 再帰
3.8.1 階乗の計算
3.8.2 フィボナッチ数列
3.8.3 ハノイの塔
3.8.4 木構造の操作
Chapter 4 コレクションフレームワーク
4.1 コレクションフレームワーク
4.1.1 コレクションフレームワーク?
4.1.2 コレクションインターフェース
4.1.3 実装クラス/抽象クラス/ユーティリティクラス
4.1.4 順序に関するインターフェース
4.1.5 解説に関する補説
4.2 コレクションインターフェース
4.2.1 Collection
4.2.2 List
4.2.3 Set
4.2.4 SortedSet
4.2.5 Map
4.2.6 SortedMap
4.2.7 Iterator
4.2.8 ListIterator
4.3 実装クラス
4.3.1 ArrayList
4.3.2 LinkedList
4.3.3 Stack
4.3.4 HashSet
4.3.5 TreeSet
4.3.6 LinkedHashSet
4.3.7 HashMap
4.3.8 TreeMap
4.3.9 LinkedHashMap
4.3.10 IdentityHashMap
4.3.11 WeakHashmap
4.4 ユーティリティクラス
4.4.1 Arrays
4.4.2 Collections
Chapter 5 データ構造とアルゴリズム,オブジェクト指向プログラミング
5.1 オブジェクト指向
5.1.1 オブジェクト指向とは
5.1.2 データ構造とアルゴリズム,オブジェクト指向プログラミング
5.2 連結リストの設計
5.2.1 要素オブジェクト
5.2.2 連結リストオブジェクト
5.3 ハッシュテーブルと木構造
5.3.1 ハッシュテーブルの設計
5.3.2 木構造の拡張
5.4 オブジェクトという単位を用いることの意義
Index