書籍概要

新・標準プログラマーズライブラリ

新・標準プログラマーズライブラリ
アルゴリズム はじめの一歩 完全攻略

著者
発売日
更新日

概要

アルゴリズムは,特殊な才能がある人だけが考えるものではありません。しっかりと基本をマスターすれば,誰でも考えられるようになるものです。本書は,プログラミングを支える強力な基礎=アルゴリズムをマスターするために,本のはじめから終わりまで,徹底的に丁寧に説明します。「ソート」「計算量」から,「二分探索木」「ハッシュ表探索法」「動的計画法」「遺伝的アルゴリズム」と,理解を積み重ねながらステップアップ。最終的には,挿入法や二分探索法のプログラムが自力で作れるようになり,基本情報技術者試験の午後問題レベルの問題が十分解けるようになります。

こんな方におすすめ

  • アルゴリズムの基本をマスターしたい方
  • アルゴリズムの大切なことを,丁寧に,しっかりと学びたい方
  • 情報処理技術者試験のアルゴリズム問題が苦手な方

サンプル

samplesamplesample

目次

第1章 ウォーミングアップ

  • 1-1 アルゴリズムとは何か
    • 1-1-1 アルゴリズムという言葉の意味
    • 1-1-2 アルゴリズムを考えるコツ
    • 1-1-3 コンピュータのアルゴリズム
  • 1-2 フローチャート,擬似言語,Java,C言語の対応
    • 1-2-1 基本構文
    • 1-2-2 処理の流れ
    • 1-2-3 演算子
  • 1-3 ユークリッドの互除法
    • 1-3-1 アルゴリズムの説明
    • 1-3-2 アルゴリズムのトレースと仕組み
    • 1-3-3 アルゴリズムの表記

第2章 ループと配列の基本と線形探索

  • 2-1 ループと配列の基本
    • 2-1-1 配列の合計値を求めるアルゴリズム
    • 2-1-2 アルゴリズムのトレース
    • 2-1-3 Javaによるアルゴリズムのトレース
  • 2-2 線形探索
    • 2-2-1 線形探索のアルゴリズム
    • 2-2-2 アルゴリズムのトレース
    • 2-2-3 Javaによるアルゴリズムのトレース

第3章 二分探索と計算量

  • 3-1 二分探索
    • 3-1-1 二分探索のアルゴリズム
    • 3-1-2 アルゴリズムのトレース
    • 3-1-3 Javaによるアルゴリズムのトレース
  • 3-2 アルゴリズムの計算量
    • 3-2-1 線形探索と二分探索の計算量
    • 3-2-2 サーチとソートの主なアルゴリズムの計算量
    • 3-2-3 データ量と計算量

第4章 多重ループと挿入法

  • 4-1 多重ループの基礎
    • 4-1-1 掛け算の九九表のアルゴリズム
    • 4-1-2 アルゴリズムのトレース
    • 4-1-3 Javaによるアルゴリズムのトレース
  • 4-2 挿入法
    • 4-2-1 挿入法のアルゴリズム
    • 4-2-2 アルゴリズムのトレース
    • 4-2-3 Javaによるアルゴリズムのトレース

第5章 連結リストの仕組みと操作

  • 5-1 連結リストの仕組みとトレース
    • 5-1-1 通常の配列と連結リストの違い
    • 5-1-2 連結リストの長所
    • 5-1-3 連結リストの短所
  • 5-2 連結リストを操作するプログラム
    • 5-2-1 連結リストを作成して要素を表示する
    • 5-2-2 連結リストへ要素を挿入する
    • 5-2-3 連結リストから要素を削除する

第6章 二分探索木への追加と探索

  • 6-1 二分探索木のデータ構造と要素の追加
    • 6-1-1 二分探索木のデータ構造
    • 6-1-2 二分探索木へ要素を追加するアルゴリズム
    • 6-1-3 アルゴリズムのトレース
  • 6-2 二分探索木の探索
    • 6-2-1 二分探索木の深さ優先探索
    • 6-2-2 二分探索木から要素を探索するアルゴリズム
    • 6-2-3 再帰呼び出しによる二分探索木の探索

第7章 ハッシュ表探索法

  • 7-1 ハッシュ表探索法の仕組み
    • 7-1-1 ハッシュ表探索法のアルゴリズム
    • 7-1-2 アルゴリズムのトレース
    • 7-1-3 Javaによるアルゴリズムのトレース
  • 7-2 シノニムに対処する方法
    • 7-2-1 シノニムに対応するためのアルゴリズム
    • 7-2-2 アルゴリズムのトレース
    • 7-2-3 Javaによるアルゴリズムのトレース

第8章 再帰呼び出しとクイックソート

  • 8-1 再帰呼び出し
    • 8-1-1 nの階乗を求めるアルゴリズム
    • 8-1-2 アルゴリズムのトレース
    • 8-1-3 Javaによるアルゴリズムのトレース
  • 8-2 クイックソート
    • 8-2-1 クイックソートのアルゴリズム
    • 8-2-2 アルゴリズムのトレース
    • 8-2-3 Javaによるアルゴリズムのトレース

第9章 動的計画法とナップサック問題

  • 9-1 動的計画法
    • 9-1-1 再帰呼び出しでフィボナッチ数を求める
    • 9-1-2 動的計画法でフィボナッチ数を求める
    • 9-1-3 再帰呼び出しと動的計画法を組み合わせてフィボナッチ数を求める
  • 9-2 ナップサック問題
    • 9-2-1 ナップサック問題と動的計画法
    • 9-2-2 動的計画法でナップサック問題を解く仕組み
    • 9-2-3 動的計画法でナップサック問題を解くプログラム

第10章 遺伝的アルゴリズムとナップサック問題

  • 10-1 遺伝的アルゴリズムでナップサック問題を解く仕組み
    • 10-1-1 遺伝的アルゴリズムの手順
    • 10-1-2 遺伝的アルゴリズムの仕組みを説明するプログラム
    • 10-1-3 遺伝的アルゴリズムの仕組みを説明するプログラムの概要
  • 10-2 遺伝的アルゴリズムでナップサック問題を解くプログラムの作成
    • 10-2-1 プログラムを構成するフィールドの役割
    • 10-2-2 プログラムを構成するメソッドの機能
    • 10-2-3 プログラム全体

付録 基本情報技術者試験の問題で腕試ししてみよう

  • 平成30年度 春期 午後 問8「ヒープの性質を利用したデータの整列」
  • 解説と解答
  • 平成29年度 秋期 午後 問8「文字列の誤りの検出」
  • 解説と解答

クイズ

  • Quiz 最小公倍数を求めるには?
  • Quiz なぜ配列の先頭が0番なのか?
  • Quiz 線形探索を効率化する番兵の値は?
  • Quiz 最初に何という数をいえば合格か?
  • Quiz 昇順を降順に変えるには?
  • Quiz breakを使わずにループを途中終了するには?
  • Quiz 削除した要素を管理するには?
  • Quiz どの部分が根,節,葉?
  • Quiz なぜハッシュと呼ぶのか?
  • Quiz クイックソートが速い理由は?
  • Quiz ウサギのペアの数は?
  • Quiz 遺伝的アルゴリズムがどこに使われている?

確認問題

  • 第1章 確認問題
  • 第2章 確認問題
  • 第3章 確認問題
  • 第4章 確認問題
  • 第5章 確認問題
  • 第6章 確認問題
  • 第7章 確認問題
  • 第8章 確認問題
  • 第9章 確認問題
  • 第10章 確認問題

コラム

  • COLUMN ユークリッドの互除法のよりよい手順
  • COLUMN 配列の最大値と最小値を求める
  • COLUMN 工夫すれば速くなる! 素数を判定するアルゴリズムの計算量
  • COLUMN 挿入法と同じ計算量O(N2)のバブルソートと選択法
  • COLUMN 単方向リスト,双方向リスト,循環リスト
  • COLUMN ヒープとヒープソート
  • COLUMN オープンアドレス法とチェイン法
  • COLUMN 効率のよい基準値を選ぶ方法
  • COLUMN 簡単な貪欲法でナップサック問題を解く
  • COLUMN プログラミングコンテストの問題に挑戦

サポート

ダウンロード

本書に掲載しているサンプルプログラム

(2019年2月7日更新)

ダウンロード
Samples.zip

本書に掲載しているJavaのサンプルプログラム,およびJavaのサンプルプログラムと同じ機能のコードをC言語で記述したサンプルプログラムをダウンロードいただけます。

ZIP形式で圧縮されていますので,解凍してからお使いください。

解凍が終わると「JavaSamples」「CSamples」の2つのフォルダが表示されます。「JavaSamples」にはJavaのサンプルプログラムを,「CSamples」にはC言語のサンプルプログラムを収めています。
「JavaSamples」「CSamples」フォルダをクリックすると,それぞれ「Chapter01」から「Chapter10」までの10個のフォルダが表示されます。「Chapter01」には本書の第1章に掲載しているプログラムを,「Chapter10」には本書の第10章に掲載しているプログラムを収録しています。

商品一覧