PR:この記事にはアフィリエイトリンクが含まれます。
C#の文法を覚えたあとに、処理が大きくなったときの変化をつかむ分野がデータ構造とアルゴリズムです。中級へ進むなら、コードが動くことに加えて、なぜその構造を使うのか説明できる力も身につけたいところ。
要素が増えた途端に遅くなる。反対に、少しの工夫で検索がぐっと速くなる。そんな差を理解するのが、この分野を学ぶおもしろさですよね。計算量やデータの持ち方は実務にもつながります。
紹介する五冊のうち、C#のコード例を直接読めるのは一冊です。ほかの四冊は日本語のC・C++書籍。言語や扱う範囲の違いを見ながら、自分に合う本を探せます。
早見表
五冊の言語と内容を一覧にしました。C#のコードを直接読みたいか、日本語で考え方を押さえたいかで、取り組みやすさが変わってきます。
| 書名 | 言語・分量 | 主な内容 |
|---|---|---|
C# Data Structures and Algorithms, Second Edition | 英語・C#、372ページ | 基本構造から木・グラフ、計算量まで |
問題解決力を鍛える!アルゴリズムとデータ構造 | 日本語・C++、368ページ | 問題解決の技法、データ構造、グラフ |
Cによる アルゴリズムとデータ構造 | 日本語・C、160ページ | 探索、ソート、主要なデータ構造 |
Cによるアルゴリズムとデータ構造 改訂2版 | 日本語・C、258ページ | 計算量、設計、実装、演習 |
アルゴリズムの基礎とデータ構造 数理とCプログラム | 日本語・C、240ページ | 漸近計算量、木、ヒープ、Union-Find |
表に価格を記した四冊の金額は、税込の公式定価を参考価格として載せています。実際の販売価格は時期や店舗で変わるため、購入時に確認してください。
C#の実装例を優先するなら、英語の一冊が有力です。日本語で概念を学びたい人は、CやC++の例で考え方をつかんだあと、C#の型やライブラリーへ置き換えてみる方法もあります。
中級の考え方
C#の配列やList<T>なら、要素を順に見る処理はわかりやすいものです。中ほどへの挿入では後ろの要素をずらす必要があり、検索も先頭から調べる形なら、件数が増えるほど時間が延びます。
計算量は入力が大きくなったときの処理の伸び方を表します。全要素を一度ずつ見る処理はO(N)、二重ループで全組み合わせを調べる処理はO(N²)になりやすく、データ量が増えると差が広がります。
グラフでは頂点をたどる手順と、辺の保存方法の両方が大切です。C#なら隣接リストをList<int>[]で持ち、幅優先探索にはQueue<int>を使うのが基本形。構造とアルゴリズムが結び付く場面ですね。
本のコードを写すだけで終わらせず、入力サイズを変えて実行時間を確かめてみましょう。Big-Oの記号と実際の処理がつながると、計算量の知識をコードに生かせます。
C#実装を追う
Marcin Jamro著、Packt Publishing刊の第2版で、2024年2月29日発行、372ページです。英語書籍ですが、C#のコード例を読みながら学べる点が大きな強み。
配列、リスト、スタック、キュー、辞書、集合といった基本構造を扱います。データの追加や探索をどう実装するか、コードを追いながら確かめられます。
木やグラフへ進み、ソート、グラフ探索、最小全域木、最短経路も取り上げます。時間計算量と空間計算量、Big-O記法も学べるので、処理速度に加えてメモリー使用量まで考えられます。
C#の実装例を本に沿って読みたい人には、五冊の中で最も直結した一冊です。解説もコードも英語なので、技術用語に慣れていないと読むペースが落ちることも。英語に抵抗がなければ第一候補にできますね。
日本語で解法を学ぶ
大槻兼資著、秋葉拓哉監修、講談社刊の本です。2020年発行、A5判368ページで、参考価格は税込3,300円。日本語の解説を読みながら、問題を解く手順を組み立てる力を鍛えられます。
全探索、再帰と分割統治、二分探索、貪欲法、動的計画法など、解法の技法を幅広く扱います。各種データ構造やソート、グラフに加え、PとNPも収録。問題解決の全体像をつかみたい人に合います。
コードと例題はC++中心で、AtCoderの問題も使われています。C#へ書き直すときは、一般的な対応付けとしてvectorをList<T>に、queueをQueue<T>に置き換える方法があります。
日本語で解法の筋道を追いたい人におすすめです。C++の処理を説明し直し、C#で書くところまで進めれば、言語を越えて理解を深められます。
短い本で一周する
松原雅文、山田敬三著、森北出版刊。2021年8月発行、菊判160ページで、参考価格は税込2,420円です。主要な構造とアルゴリズムを短い本で確認したい人に、手に取りやすい一冊でしょう。
探索、ソート、文字列照合のほか、スタック、キュー、連結リスト、二分探索木、ハッシュ法、ヒープを扱います。グラフ探索や最短経路もあり、基礎項目をひと通り押さえられます。
実装例はC言語で、ソースコードも配布されています。コードを動かしながら読めるのが利点です。読み終えたあとに、どの構造をC#標準のコレクションで表せるか、自分の手で確かめると理解が進みます。
C言語の構文に慣れていない人は、読み替えの時間も見込んでください。C#では配列とList<T>の性質が異なるため、要素数が変わる場面で使い分ける力も身につきます。
設計と演習を固める
茨木俊秀著、オーム社刊の改訂2版です。2019年5月31日発売、A5判258ページで、参考価格は税込2,970円。計算量からデータ構造、設計、実装へ順を追って扱います。
内容は基本的なデータ構造、順序付き集合、整列、アルゴリズムの設計と実現など。出版社では初級・中級・上級向けとして案内され、演習問題にはヒントと略解が付いています。
掲載コードはC言語で、コードをダウンロードできます。まず自分で考え、行き詰まった箇所はヒントで確かめる流れが取れます。演習を通じて理解を確認しやすい構成です。
計算量や構造、設計を順序立てて学びたい人に合います。C#への読み替えは必要ですが、演習まで取り組んで考え方を身につけたい人には有力な一冊です。
数理まで掘り下げる
浅野孝夫著、近代科学社刊の本です。2017年3月28日発売、A5判240ページで、参考価格は税込2,970円。O記法に加え、Ω記法とΘ記法も扱い、漸近計算量を数理面から学べます。
ソート、ヒープ、リスト、二分探索木、二色木、ハッシュ法、Union-Findのほか、凸包や最小全域木も収録。基礎的な構造からグラフや計算幾何に関わるテーマまで扱います。
C言語のプログラム例と演習問題があり、解答は詳細です。答え合わせに加えて、計算量の見積もりや手順も確認できるので、実装の理由まで理解したい人に適しています。
記号や数式をしっかり読み込みたい人におすすめです。数理面にも進むため軽く読み流す本ではありませんが、理論を踏まえてC#の実装を考えたい人には独習の助けになります。
結論
C#で実装しながら学ぶなら、Marcin Jamroの『C# Data Structures and Algorithms, Second Edition』が第一候補です。英語ではありますが、C#のコードで基本構造から木・グラフ、計算量まで追える点が決め手になります。
日本語で解法の組み立て方を学ぶなら、『問題解決力を鍛える!アルゴリズムとデータ構造』がおすすめです。C++の例をC#へ書き換えながら理解を深めたい人に合います。
主要項目を一周するなら森北出版の本、演習で設計を固めるならオーム社の改訂2版、数理や詳しい解答まで読み込みたいなら浅野孝夫の本が適しています。伸ばしたい力に近い一冊から始めてください。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。






