標準プログラマーズ ライブラリシリーズJava アルゴリズム+データ構造完全制覇

[表紙]Java アルゴリズム+データ構造完全制覇

B5変形判/368ページ

定価(本体2,480円+税)

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

著者プロフィール

杉山貴章(すぎやまたかあき)

ONGS Inc.所属のプログラマ兼テクニカルライター。雑誌,書籍,Webメディアで多数の著作をもつ。

著書