本書ではアルゴリズムとデータ構造について解説しており、ソートアルゴリズムやサーチ、リスト、ツリー構造、再起呼び出しなどの基本的な内容から、数値計算の手法や文字列検索、さらにゲームの解を探すアルゴリズムとしてバックトラック法と軸優先探索、動的計画法が解説されている。
いずれもC/C++とJavaによるコードが付属しており、データ構造とアルゴリズムの概念を実際にコードでどのように表現するか、実装するのかを学ぶことができるのが魅力だ。もちろんコードは手動で打つほか、ダウンロードも可能となっており、初歩的なプログラミングのスキルがあれば十分読み進めることができるレベルである。また、実装におけるテクニックやアルゴリズムを生かす場面が多く掲載されており、アカデミックな面よりプログラミングの現場に近い面が強く出ているのも本書の特徴である。
プログラミングを学ぶうえでアルゴリズムとデータ構造は重要な知識であり、特に関数型の言語では大きな役割を持つ。これらはプログラミング言語が変わっても不変の知識であり、プログラマの基礎力となるものである。コードを書くスキルを身につけたなら、次のステップとして学んでみてほしい。(斎藤牧人)
この本は、そんな初心者が手をつけ始めるのに格好の本です。
ソート,サーチ,再帰,リスト,ツリーなどの概念は、よりエレガントに
プログラムを書くのに必須の概念です。
この本をマスターすれば、さらに上級に進めるきっかけを得られるのでは
ないでしょうか。
この本は、そういった技術者特有の難しい言葉を使わずに、図とソースコードを豊富に用いて
それぞれのアルゴリズムを初心者が理解しやすい形で説明しています。
また、実際に説明したアルゴリズムを使ってサンプルプログラムを提示することが多く、
そのサンプルも15パズルなど読んでいて面白い題材を使っているので
あまりプログラミングになれていない人でもきっと理解しやすいだろうという印象を受けました。
ただ、いくつか説明を前後したり、細かいところを端折っていたりする部分も
見受けられましたが、そういうところは出来るだけ!コラムや後ろの章でカバーしているようです。
プログラムを書くことに慣れた人がリファレンス代わりに使うのには適しませんが、
プログラミングをはじめたばかりの人がステップアップに使うのであれば、
知識とプログラミングの楽しさ両方を得られる良書だと思います。
言語はCですが、各章の最後に同じソースコードのJava版も載っています。