標準プログラマーズ ライブラリシリーズJava アルゴリズム+データ構造完全制覇
2002年11月29日紙版発売
杉山貴章,後藤大地 監修,(有)オングス 著
B5変形判/368ページ
定価2,728円(本体2,480円+税10%)
ISBN 4-7741-1632-7
ただいま弊社在庫はございません。
書籍の概要
この本の概要
汎用性のある美しいコードを記述するためには,プログラミング学習の早い段階でデータ構造とアルゴリズムを学んでおくことをお勧めします。本書ではJavaプログラミングを例に取り,オブジェクト指向のデータ構造とアルゴリズムを基礎からきちんと解説します。
こんな方におすすめ
- Javaの基礎は習得していて次のステップに進みたい方
- アルゴリズムとデータ構造の基本を理解しておきたい方
- コレクションフレームワークについて知っておきたい方
著者の一言
本書はデータ構造とアルゴリズムの入門書です。例題にはJava言語を使用します。初心者の入門後の利用のためと中級者向けにコレクションフレームワークのリファレンスブックとしても利用できる章を設けてあります。
学習は自分自身でなし得るしかありません。教わったものよりも,自分で考え取り組んだ内容の方が身がつくこともまた事実です。本書があなたの学習や利用の手助けとなることを祈ります。
著者のサイト紹介著者の(有)オングスのサイト:http://www.ongs.co.jp/
目次
- はじめに
- 本書を読む前に
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
この本に関連する書籍
-
実習JAVA −本当に使える最新プログラミングテクニック
どんな言語でも,文法をマスターしただけでは実際の役には立ちにくいものです。それは英語などの事情と同じことです。実践力は,意識的に知識を磨き,場数を踏むことに...
-
ひとりでできる Java 実践入門
Javaの世界は広く,奥深いものです。きちんとしたプログラムを書けるようになるためには,いろいろなことを学ばなければなりません。その際に重要なのは,どの順番で何...
-
Java デザインパターン徹底攻略
「よりよいオブジェクト指向設計」を手助けする道具,それがデザインパターン本来の役割です。本書はGoFデザインパターンすべてについて,その目的と効用をわかりやすく...
-
Java API 実用リファレンス JDK 1.4 コアパッケージ版
本書は,J2SDK v1.4に含まれる主要な6つのパッケージ(java.lang,java.iojava.util,java.net,java.nio,java.math)をまとめたリファレンスマニュアルです。各パッケ...