Menu
CoddyTech
学習パス

C#のデータ構造とアルゴリズム

C#のジェネリックコレクションには、このパスの大部分がすでに入っています。Stack<T>、Queue<T>、Dictionary<TKey,TValue>、LinkedList<T>、SortedSet<T>は、それぞれスタック、キュー、ハッシュテーブル、双方向連結リスト、平衡探索木です。そのひとつひとつをC#で自分で実装し、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。

377 レッスン284 チャレンジ702 クイズの問題

  • 初心者向け
  • sparkles iconAIによるコーディングサポート
  • hint icon実践的なインタラクティブレッスン
  • volume On icon全レッスンに音声ナレーション付き
  • quiz icon知識を確かめるクイズ
  • certificate iconパス全体で23枚の無料修了証

C#のDSA、ステップごとに

38 コース377 レッスン284 チャレンジ702 クイズの問題

各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをC#で開きます。まだC#で教えていない3つのコースは、ステップの後にまとめて載せています。

  1. 1
    このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをC#でゼロから実装し、実際に問題を解くのに使います。これを終えると、Stack<T>、Queue<T>、Dictionary<TKey,TValue>は自分で書いたことのある構造になり、それぞれの呼び出しのコストがわかります。開始
  2. 2
    このステップを始める開始双方向連結リスト、ヒープと優先度付きキュー、トライ木、グラフ、そして自己平衡するAVL木。最初の双方向連結リストには、LinkedList<T>という既製品があります。このステップを終えると、SortedSet<T>は仕組みのわかる平衡木になり(あなたのものがAVL木なのに対し、あちらは赤黒木です)、ヒープはどの.NETのバージョンでも自分で書けるものになります。開始
  3. 3
    このステップを始める開始バブル、選択、挿入、マージ、クイック、ヒープ、計数、基数ソートを、C#で書き、可視化ツールで眺めます。Array.SortとList<T>.Sortはイントロソート(ヒープソートと挿入ソートで補強したクイックソート)で安定ではなく、一方LINQのOrderByは安定です。その理由は、このステップを終えればわかります。開始
  4. 4
    このステップを始める開始C#での再帰のチャレンジ問題。ほかのレッスンと同じく、テストケースで採点されます。.NETでは、ベースケースにたどり着かない再帰はStackOverflowExceptionで終わり、この例外はキャッチできません。だから再帰メソッドには、何よりも先に抜け出す道が必要です。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページ
  5. 5
    このステップを始める開始幅優先探索と深さ優先探索、ダイクストラ法、ベルマン・フォード法、トポロジカルソート、クラスカル法とプリム法を、ステップ2で作ったグラフの上でC#で学びます。ダイクストラ法には優先度付きキューが必要ですが、C#に加わったのは.NET 6になってからなので、知っておくべきはステップ2のヒープです。開始
  6. 6
使える機能
コーディングを学ぶために使うすべて

実践で学ぶ

実際のコードを書き、データベースをクエリし、ウェブサイトを構築し、AIプロンプトをマスターしましょう。インタラクティブなレッスンで現代の開発者に必要なすべてのスキルを網羅しています。

playground.js
コードエディタ
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
テスト #1test Case Success icon
テスト #2test Case Success icon
テスト #3test Case Failure icon
入力
"Alex"
出力
"Hello, Coddy! Alex"

連続記録を築こう

継続して進捗を見守りましょう!毎日のコーディング習慣を追跡し、フリーズ日で連続記録を守り、毎日参加することで報酬を獲得しましょう。

12 日連続

明日も戻ってきて連続記録を維持しましょう!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

ダブル・オア・ナッシング

7日中5日目

fire Freeze icon

連続記録フリーズ

2 left

どこでも学べる

コーディングの旅を持ち歩こう!セットアップ不要、ダウンロード不要 - 開いてすぐにコーディング開始。iOS、Android、Webで4.9星評価で利用可能。

Python
7ストリーク
250スコア
5エネルギー
変数
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
続ける
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
ジャーニー
目標
リーダーボード
プロフィール
4.9
星星星星星
評価

あなたは一人じゃない

グローバルリーダーボードで競い、友達を招待して報酬を獲得し、お互いの成功を祝いましょう。プログラミングは友達と一緒の方が楽しい!

チャレンジャーリーグ
チャレンジャーリーグ上位7名が昇格
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up icon昇格ゾーンleaderboard Arrow Up icon

あらゆる学び方に対応

読む・聴く・自分を試す・AIに聞く・学んだことを調べる。どんな学び方にも対応したレッスンです。

変数の入門
音声

変数は、後でプログラム内で参照できる値を格納する、名前のついた入れ物です。

Pythonでは、名前、イコール記号、格納したい値の順で書くことで作成します。

値は後から変えられます。再代入すると、名前は新しい値を指すようになります。

1xSarah

修了証を取得

完了したすべてのコースで証明書を獲得しましょう。LinkedInプロフィールや履歴書に追加して、雇用主にプログラミングスキルをアピールしましょう。

Coddy修了証明書
これは以下を証明します山田 太郎が正常に完了しました
python iconPythonの基礎
認証済み
日付2026年1月
LinkedInLinkedInに追加

C#のDSAをCoddyで学ぶ理由

  • 各コレクションのコストを知る。List<T>は動的配列なので、Insert(0, x)はその後ろのすべての要素をずらします。Dictionary<TKey,TValue>はハッシュテーブルで、平均で定数時間ですが、その性能はキーのGetHashCodeの質しだいです。構造を自分で作ることで、こうした事実は雑学ではなくなり、どのコレクションを選ぶかを決める判断材料になります。
  • Unityと.NETの言語。C#はUnityのゲームのスクリプトを書く言語で、業務用ソフトウェアの多くは.NETの上で動いています。どちらも同じ構造に頼っています。タイルマップはグラフ、経路探索はグラフ探索、ターン順やイベントのスケジュールは優先度付きキューなので、アルゴリズムと実際のコードベースが同じ言語でつながります。
  • パスのほぼすべてをC#で。データ構造、ソート、グラフアルゴリズム、再帰のチャレンジ、面接パックは、すべてC#で教えています。別の言語で教える3つのコースは、それぞれへのリンクとともにステップの後にまとめて載せています。動的計画法とPython面接シリーズ(Python)、そしてビット演算(C++)です。3つのうちC#から最も追いやすいのはビット演算で、C#はC++のビット演算子を同じ記号で書きます。
  • 面接と同じ形で採点。どのレッスンもテストケースで確認されるC#のチャレンジで終わり、失敗したときはBugsyがあなたのコードを読み、答えを教えずに修正の方向へ導きます。ほとんどのコースで無料の修了証が発行され、それぞれ専用URLで検証できます。

C#でのDSA学習についてよくある質問

C#はデータ構造とアルゴリズムの学習に向いていますか?

はい。Javaとよく似た読み心地で、型によってノード、参照、ジェネリクスの型パラメータがすべて明示され、System.Collections.Genericがこのパスの構造の大半をカバーしています。早めに身につけたい習慣が2つあります。LINQは簡潔ですが、OrderByはどれもソートで、Whereはどれもループなので、あなたが数えられるようになろうとしているコストを隠してしまいます。そしてArray.Sortは安定ではないので、等しいキーの順序を保つ必要があるときには、それが問題になります。

.NETのどのコレクションが、どのデータ構造にあたりますか?

List<T>は動的配列、Stack<T>とQueue<T>は配列ベース、LinkedList<T>は双方向連結リスト、Dictionary<TKey,TValue>とHashSet<T>はハッシュテーブル、SortedDictionary<TKey,TValue>とSortedSet<T>は赤黒木で、ステップ2で作るAVL木と同じく平衡木です。SortedList<TKey,TValue>はキーの順に保たれた2つの配列の組で、.NET 6以降のPriorityQueue<TElement,TPriority>は配列ベースの最小ヒープです。トライ木やグラフのクラスはないので、それらは自分で書きます。

C#では、木やリストのノードはクラスと構造体のどちらにすべきですか?

クラスです。structは値型なので、自分自身の型のフィールドをそもそも持てず、コピーされた先で変更しても元には影響しません。クラスのインスタンスは参照なので、連結リストや木に必要なかたちでノード同士が互いを指せます。構造体は、グリッドの座標や重み付きの辺のような小さな値のために取っておきましょう。

C#に優先度付きキューはありますか?

.NET 6以降はあります。PriorityQueue<TElement,TPriority>で、各要素がそれぞれの優先度とともにエンキューされる、配列ベースの最小ヒープです。順序を逆にするIComparer<TPriority>を渡せば最大ヒープになります。.NET Frameworkや古いランタイムにはないため、C#の開発者は長いあいだヒープを自作するか、SortedSet<T>を無理やりヒープ代わりに使ってきました。自分で書けることが今も大切なのはそのためで、それをするのがステップ2です。

このパスで、C#で教えていないコースはどれですか?

3つです。動的計画法とPython面接シリーズはPythonで、ビット演算はC++で教えています。これらはステップの後にまとめて載せてあり、それぞれのリンクからその言語でコースを開けます。C#ならメモ化テーブルは配列かDictionaryで、ビットのテクニックもきれいに移植でき、C++が設けている区別までそのまま同じです。>>はintでは符号を保ち、uintではゼロで埋めます。

このパスを始める前に、C#を知っている必要がありますか?

少なくとも、クラス、メソッド、配列、ループ、そしてList<T>のようなジェネリックコレクションは必要です。初めて見るものがあれば、まずCoddyのC#コースが無料でそこまで連れて行ってくれます。このパスは、そのコースが終わるところから始まります。

他の学習パス

同じコースを別の職種向けに並べたものです。進捗は引き継がれ、あるパスで修了したコースは、それを含むすべてのパスで修了扱いになります。

すべての学習パス
Coddyのプログラミング言語のイラスト

データ構造とアルゴリズムパスを無料で始める

学習を始める