「アルゴリズムとデータ構造」問題

# TL;DR

- SEO対策大切。
 - 本のタイトルをしっかり決めないと、埋もれちゃう。
- 時代によって必要になる知識も変わりつつある。
 - 「学生時代にこういうの学んだ」が時代遅れになる恐れも。 

# はじめに

@drken 氏から、新しい書籍「問題解決力を鍛える!アルゴリズムとデータ構造」を出したとのこと、おめでとうございます！！

[アルゴリズム本、書きました！](https://qiita.com/drken/items/08fd5c8c2b9d8c441dc3) 

……あれ？なんか似た名前の本を色々知ってるぞ…えっと…

と悩んだので、さっそくまとめてみる。

# 調査結果

## 最古

- データ構造とアルゴリズム (情報処理シリーズ)
 - https://opac.nii.ac.jp/opc/recordID/catalog.bib/BN00849227
 - 出版 1986年
 - Super PASCALを定義して、それで説明。
 - @ht_deko 氏の[培風館の Pascal 関連書籍を読んでみる](https://qiita.com/ht_deko/items/65e84a12e0203da77337) にコメントあり。

## 傾向

### かなり昔は「アルゴリズムとデータ構造」とシンプルなものも多い。

直球勝負ですね。

 - データ構造とアルゴリズム (情報処理シリーズ) / 出版社: 培風館 (1987/03)
 -  アルゴリズムとデータ構造 (電気工学入門シリーズ) / 出版社: 森北出版 (1990/01)
 -  アルゴリズムとデータ構造 / 出版社: 近代科学社 (1990/9/1)
 -  アルゴリズムとデータ構造〈1〉 (情報処理基礎講座) / 出版社: 電子開発学園出版局 (1998/04)

昔はそこまで競合もなかったのであれば、多分問題なかったのかなあと……　ほにゃらら出版社のアルゴリズムとデータ構造が欲しい、で通じていたのかもしれないですね。

### 最近は、言語＋「データ構造とアルゴリズム」が結構多い。

例えば、下３つが並んでて、どうしようかと…

 - Pythonによるアルゴリズムとデータ構造の基礎
 - 新・明解Pythonで学ぶアルゴリズムとデータ構造
 - Ｐｙｔｈｏｎで学ぶアルゴリズムとデータ構造 (データサイエンス入門シリーズ)

むむむ、SEO対策しっかりやらないと、これ埋もれちゃうぞ……


### 話題がちょっと変わってきた

そもそもの「アルゴリズムとデータ構造」でとりあつかう話題とはなにか？については、@k0kubun 氏の [アルゴリズムとデータ構造](https://qiita.com/k0kubun/items/e7dbb4ca53f903a38c46)が分かりやすいですね。

かなり昔(Fortranとか書いていた時代）だと、文字列検索／ストリングマッチングも自分で書いたりしたこともあった。もはや現在はこのあたりは標準提供されるので、きにしないレベルに…。

- 昔
 - 文字列検索
 - ソートアルゴリズム
 - 探索アルゴリズム
 - 木構造

- 現在
 - ソートアルゴリズム
 - 探索アルゴリズム
 - 木構造
 - 動的計画法


## 結果一覧

雰囲気で「これ表紙で目立つな、目立たないな」で判断しているので、細かいことは言いっこなしで……


- 2大シミュレータで学ぶアルゴリズムとデータ構造
- C#で学ぶオブジェクト指向プログラミング―図解でおぼえるデータ構造とアルゴリズム
- C/C++アルゴリズム入門―だれでもわかるデータ構造とアルゴリズム
- Cで学ぶデータ構造とアルゴリズム
- Cによるアルゴリズムとデータ構造
- Cによるアルゴリズムとデータ構造 (コンピュータサイエンス・シリーズ)
- Cによるアルゴリズムとデータ構造(改訂2版)
- Cプログラマのためのアルゴリズムとデータ構造〈Part2〉
- Cをさらに理解しながら学ぶ データ構造とアルゴリズム
- C言語10課 データ構造とアルゴリズム編
- C言語データ構造とアルゴリズム―配列とリストの処理で学ぶプログラミング手法
- C言語で学ぶアルゴリズムとデータ構造基礎の基礎―できるプログラマを目指す人のための!!
- C言語によるアルゴリズムとデータ構造 (柴田望洋プログラミングシリーズ)
- C言語によるアルゴリズムとデータ構造入門
- Fortran〈3〉データ構造とアルゴリズム
- Java データ構造とアルゴリズム基礎講座
- Javaアプレットで学ぶデータ構造とアルゴリズム
- Javaアルゴリズム+データ構造完全制覇
- Javaで学ぶ「データ構造」と「アルゴリズム」―プログラミングの基本の理論と実際
- Javaで学ぶアルゴリズムとデータ構造
- Javaで学ぶデータ構造とアルゴリズム
- Javaによるアルゴリズムとデータ構造
- Javaによるアルゴリズムとデータ構造の基礎
- Javaによるデータ構造とアルゴリズム解析入門
- Javaによるプログラミング―アルゴリズムとデータ構造
- Javaプログラマのためのアルゴリズムとデータ構造
- Ｐｙｔｈｏｎで学ぶアルゴリズムとデータ構造 (データサイエンス入門シリーズ)
- Pythonで体験してわかるアルゴリズムとデータ構造
- Pythonによるアルゴリズムとデータ構造の基礎
- Visual Basic〈Vol.2〉はじめてのアルゴリズムとデータ構造
- Visual C#.NETによる 明解 アルゴリズムとデータ構造
- アプリで学ぶ データ構造とアルゴリズム
- アルゴリズムデータ構造計算論 (Information & Computing)
- アルゴリズムとデータ構造 
- アルゴリズムとデータ構造 (21世紀を指向した電子・通信・情報カリキュラムシリーズ)
- アルゴリズムとデータ構造 (グラフィック情報工学ライブラリ)
- アルゴリズムとデータ構造 (基礎のツールボックス)
- アルゴリズムとデータ構造 (実践的技術者のための電気電子系教科書シリーズ)
- アルゴリズムとデータ構造 (情報工学レクチャーシリーズ)
- アルゴリズムとデータ構造 (情報処理基礎講座)
- アルゴリズムとデータ構造 (電気・電子系教科書シリーズ)
- アルゴリズムとデータ構造 (電気工学入門シリーズ)
- アルゴリズムとデータ構造 (未来へつなぐ デジタルシリーズ 10)
- アルゴリズムとデータ構造(第2版) (情報工学レクチャーシリーズ)
- アルゴリズムとデータ構造(第3版)
- アルゴリズムとデータ構造〈1〉 (情報処理基礎講座)
- アルゴリズムとデータ構造〈2〉 (情報処理基礎講座)
- アルゴリズムとデータ構造＜改訂 C言語版＞ (電気工学入門シリーズ)
- アルゴリズムとデータ構造の設計法
- アルゴリズムの基礎とデータ構造：数理とCプログラム
- アルゴリズム設計とデータ構造 (ライブラリ情報学コア・テキスト)
- データ構造とアルゴリズム (コンピュータサイエンス教科書シリーズ)
- データ構造とアルゴリズム (データサイエンス大系)
- データ構造とアルゴリズム (情報処理シリーズ)
- データ構造とアルゴリズム (新・情報 通信システム工学)
- データ構造とアルゴリズム (電子情報通信レクチャーシリーズ B-8)
- データ構造とアルゴリズム (電子情報通信学会大学シリーズ)
- データ構造とアルゴリズムのエッセンス
- データ構造と基本アルゴリズム
- プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
- プログラミングに活かすデータ構造とアルゴリズムの基礎知識
- プログラミングの宝箱 アルゴリズムとデータ構造
- プログラミングの宝箱 アルゴリズムとデータ構造 第2版
- マスターC―オープンソースで学ぶC言語 (アルゴリズム&データ構造入門)
- 改訂 アルゴリズムとデータ構造 (情報処理基礎講座)
- 基礎から学ぶ データ構造とアルゴリズム
- 基礎から学ぶアルゴリズムとデータ構造
- 珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造
- 情報基礎シリーズ４　アルゴリズムとデータ構造 (日本語) 単行本
- 新・明解 Javaで学ぶアルゴリズムとデータ構造
- 新・明解C言語で学ぶアルゴリズムとデータ構造
- 新・明解Pythonで学ぶアルゴリズムとデータ構造
- 新版 C言語によるアルゴリズムとデータ構造
- 新訳 データ構造とネットワークアルゴリズム
- 定本 Cプログラマのためのアルゴリズムとデータ構造 
- 定本Javaプログラマのためのアルゴリズムとデータ構造
- 入門 データ構造とアルゴリズム
- 明解C言語によるアルゴリズムとデータ構造
- 明解Javaによるアルゴリズムとデータ構造
- 問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書)