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

書籍の概要

この本の概要

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

こんな方におすすめ

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

この書籍に関連する記事があります!

「アルゴリズムって?」と聞かれたらどう答えますか
1~100の中から数を1つ思い浮かべます。あなたは,その数を当ててください。

本書のサンプル

本書の一部ページを,PDFで確認することができます。

本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。

サンプル画像1

サンプル画像2

サンプル画像3

目次

第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 プログラミングコンテストの問題に挑戦

著者プロフィール

矢沢久雄(やざわひさお)

1961年栃木県足利市生まれ。
(株)ヤザワ代表取締役社長,グレープシティ(株)アドバイザリー・スタッフ。
大手電気メーカーでパソコンの製造,ソフトハウスで様々なシステム開発を経験した後,現在は独立してデータ解析アプリケーションの開発に従事している。本業のかたわら,書籍や雑誌記事の執筆活動,IT企業や学校における講演活動も精力的に行っている。お客様の笑顔を何よりも大事にする自称ソフトウェア芸人である。
主な著書に,『新・標準プログラマーズライブラリ C++ クラスと継承 完全制覇』(技術評論社),『プログラムはなぜ動くのか 第2版』(日経BP社),『情報処理教科書 基本情報技術者試験のアルゴリズム問題がちゃんと解ける本 第2版』(翔泳社)などがある。