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