Le collezioni generiche di C# contengono già gran parte di questo percorso: Stack<T>, Queue<T>, Dictionary<TKey,TValue>, LinkedList<T> e SortedSet<T> sono una pila, una coda, una tabella hash, una lista doppiamente concatenata e un albero di ricerca bilanciato. Costruisci ogni struttura da te in C#, poi usale per ordinare, ricorrere e visitare grafi, e concludi con problemi da colloquio valutati. Gratis, nel browser, con un certificato nella maggior parte dei corsi.
Algoritmi e strutture dati in C#, passo dopo passo
38 corsi•377 lezioni•284 sfide•702 domande del quiz
Ogni passaggio è un insieme di corsi Coddy già esistenti, e ogni pulsante Inizia li apre in C#. I tre corsi non ancora insegnati in C# sono elencati dopo i passaggi.
1
Passo 1
Serie sulle strutture dati, parte uno
Inizia questo passoIniziaPila, coda, albero binario, tabella hash e lista concatenata, ognuno costruito da zero in C# e poi usato per risolvere problemi. Alla fine, Stack<T>, Queue<T> e Dictionary<TKey,TValue> sono strutture che hai scritto tu, e sai quanto costa ciascuna delle loro chiamate.Inizia
Inizia questo passoIniziaLista doppiamente concatenata, heap e code di priorità, trie, grafi e l'albero AVL autobilanciato. LinkedList<T> è la prima di queste, già pronta; dopo questo passaggio SortedSet<T> è un albero bilanciato che capisci, rosso-nero dove il tuo è AVL, e un heap è qualcosa che sai scrivere su qualsiasi versione di .NET.Inizia
Inizia questo passoIniziaBubble sort, selection, insertion, merge, quick, heap, counting e radix sort, scritti in C# e osservati nel visualizzatore. Array.Sort e List<T>.Sort sono un introsort, un quicksort supportato da heapsort e insertion sort, e non sono stabili, mentre OrderBy di LINQ è stabile; dopo questo passaggio sai perché.Inizia
Inizia questo passoIniziaSfide di ricorsione in C#, valutate da casi di test come ogni lezione. In .NET una ricorsione che non raggiunge mai il caso base termina con una StackOverflowException, che non si può intercettare, quindi ogni metodo ricorsivo ha bisogno della sua via d'uscita prima di ogni altra cosa. La programmazione dinamica e la manipolazione dei bit sono elencate dopo i passaggi, perché sono insegnate in Python e in C++.IniziaPagina dedicata15 lezioni15 sfide
5
Passo 5
Algoritmi sui grafi
Inizia questo passoIniziaRicerca in ampiezza e in profondità, Dijkstra, Bellman-Ford, ordinamento topologico, Kruskal e Prim in C#, sul grafo che hai costruito nel secondo passaggio. Dijkstra ha bisogno di una coda di priorità, e C# ne ha avuta una solo con .NET 6, quindi l'heap del secondo passaggio è quello da conoscere.Inizia
Inizia questo passoIniziaDieci pacchetti di sfide da colloquio e due raccolte di problemi di programmazione in C#, valutati da casi di test: problemi mai visti, risolti senza tutorial, con collezioni che ora sai spiegare e strutture che hai scritto tu.Inizia
Scrivi codice vero, interroga database, crea siti web e padroneggia i prompt per l'AI. Le nostre lezioni interattive coprono tutte le competenze di cui ha bisogno uno sviluppatore moderno.
playground.js
Editor di codice
1const greeting ="Hello, Coddy!"
2function sayHi(name) {
3return greeting +" "+ name
4}
5
Test #1
Test #2
Test #3
Input
"Alex"
Output
"Hello, Coddy! Alex"
Costruisci la tua serie
Sii costante e guarda crescere i tuoi progressi! Tieni traccia della tua abitudine quotidiana di programmare, proteggi la tua serie con i giorni di congelamento e guadagna ricompense ogni giorno che ti presenti.
12 giorni di serie
Torna domani per mantenere la tua serie!
January 2026
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
Lascia o raddoppia
Giorno 5 di 7
Congela serie
2 left
Programma ovunque
Porta il tuo percorso di programmazione sempre con te! Niente configurazioni, niente download: apri l'app e inizia a programmare. Disponibile su iOS, Android e Web con valutazioni di 4,9 stelle.
Competi nelle classifiche globali, invita gli amici per guadagnare ricompense e festeggiate insieme i vostri successi. Programmare è più bello con gli amici!
Lega SfidanteI primi 7 avanzano
1
Alex7+ Days
2840
2
Jordan7+ Days
2650
3
Sam7+ Days
2420
4
Casey
2180
5
Morgan7+ Days
1950
Zona promozione
Tutti i modi per imparare
Leggi, ascolta, mettiti alla prova, chiedi all'AI o ripassa qualsiasi cosa tu abbia già visto. Ogni lezione si adatta a te.
Introduzione alle variabili
Audio
Una variabile è un contenitore con un nome che memorizza un valore a cui puoi fare riferimento più avanti nel programma.
In Python la crei scrivendo il nome, un segno di uguale e poi il valore che vuoi memorizzare.
Il valore può cambiare nel tempo: riassegnare il nome lo fa semplicemente puntare a un nuovo valore.
1xSarah
Ottieni un certificato
Ottieni un certificato per ogni corso che completi. Aggiungilo al tuo profilo LinkedIn e al curriculum per mostrare ai datori di lavoro le tue competenze di programmazione.
Certificato di completamento
Si certifica cheMario Rossiha completato con successo
Fondamenti di Python
Datagen 2026
Aggiungi a LinkedIn
Perché imparare algoritmi e strutture dati in C# su Coddy
Sai quanto costa ogni collezione. List<T> è un array dinamico, quindi Insert(0, x) sposta ogni elemento che segue; Dictionary<TKey,TValue> è una tabella hash, a tempo costante in media e valida solo quanto il GetHashCode delle tue chiavi. Costruire le strutture da te è il modo in cui questi fatti smettono di essere curiosità e iniziano a decidere quale collezione scegli.
Il linguaggio di Unity e .NET. C# è il linguaggio di scripting dei giochi Unity, e moltissimo software aziendale gira su .NET; entrambi si appoggiano alle stesse strutture. Una mappa a tessere è un grafo, il pathfinding è una ricerca su grafo, e l'ordine dei turni o un calendario di eventi è una coda di priorità, quindi l'algoritmo e il codice condividono lo stesso linguaggio.
Quasi tutto il percorso in C#. Ogni struttura dati, ordinamento, algoritmo sui grafi, sfida di ricorsione e pacchetto da colloquio è insegnato in C#. Tre corsi sono insegnati altrove ed elencati dopo i passaggi con un link a ciascuno: la programmazione dinamica e la serie di colloqui in Python, in Python, e la manipolazione dei bit, in C++. La manipolazione dei bit è la più facile da seguire partendo da C#, che scrive gli operatori bit a bit del C++ con gli stessi simboli.
Valutato come in un colloquio. Ogni lezione termina con una sfida in C# verificata da casi di test, e quando una fallisce, Bugsy legge il tuo codice e ti indirizza verso la correzione senza darti la risposta. Un certificato gratuito nella maggior parte dei corsi, ognuno verificabile al proprio URL.
Domande frequenti su algoritmi e strutture dati in C#
C# va bene per algoritmi e strutture dati?
Sì. Si legge in modo molto simile a Java: i tipi rendono espliciti ogni nodo, riferimento e parametro generico, e System.Collections.Generic copre la maggior parte delle strutture di questo percorso. Conviene prendere presto due abitudini. LINQ è conciso, ma ogni OrderBy è un ordinamento e ogni Where un ciclo, quindi nasconde proprio i costi che stai imparando a contare; e Array.Sort non è stabile, cosa che conta ogni volta che chiavi uguali devono mantenere il loro ordine.
Quali collezioni .NET corrispondono a quali strutture dati?
List<T> è un array dinamico, Stack<T> e Queue<T> sono basate su array, LinkedList<T> è una lista doppiamente concatenata, Dictionary<TKey,TValue> e HashSet<T> sono tabelle hash, e SortedDictionary<TKey,TValue> e SortedSet<T> sono alberi rosso-neri, bilanciati come l'albero AVL che costruisci nel secondo passaggio. SortedList<TKey,TValue> è una coppia di array mantenuti in ordine di chiave, e da .NET 6 PriorityQueue<TElement,TPriority> è un min-heap basato su array. Non esiste una classe per trie o grafi; quelli li scrivi tu.
In C# un nodo di albero o di lista deve essere una classe o una struct?
Una classe. Una struct è un tipo valore: non può contenere affatto un campo del proprio tipo, e ovunque venga copiata, una modifica alla copia lascia intatto l'originale. Un'istanza di classe è un riferimento, quindi i nodi possono puntarsi a vicenda come richiede una lista concatenata o un albero. Tieni le struct per valori piccoli, come una coordinata di una griglia o un arco pesato.
C# ha una coda di priorità?
Da .NET 6, sì: PriorityQueue<TElement,TPriority>, un min-heap basato su array in cui ogni elemento viene accodato con la propria priorità; passa un IComparer<TPriority> che inverte l'ordine per ottenere un max-heap. .NET Framework e i runtime più vecchi non ne hanno, ed è per questo che gli sviluppatori C# a lungo hanno scritto il proprio heap o adattato un SortedSet<T> a quello scopo, e per questo saperne scrivere uno conta ancora. Lo fai nel secondo passaggio.
Quali corsi di questo percorso non sono insegnati in C#?
Tre: la programmazione dinamica e la serie di colloqui in Python, insegnate in Python, e la manipolazione dei bit, insegnata in C++. Sono elencati dopo i passaggi, ognuno con un link che lo apre nel suo linguaggio. Una tabella di memoizzazione in C# è un array o un Dictionary, e i trucchi sui bit si trasferiscono senza problemi, fino alla distinzione che fa il C++: >> mantiene il segno su un int e riempie di zeri su un uint.
Devo conoscere C# prima di iniziare questo percorso?
Almeno classi, metodi, array, cicli e collezioni generiche come List<T>. Se sono argomenti nuovi, il corso di C# di Coddy ti porta prima a quel punto, gratis, e questo percorso riprende da dove finisce.
Ricevo un certificato per il percorso Algoritmi e strutture dati?
Sì. Completa ogni passo e ricevi un certificato gratuito per l'intero percorso Algoritmi e strutture dati. Elenca ogni corso completato lungo il percorso, e rimanda al certificato di ogni corso, così chiunque può verificare ogni competenza indicata. Puoi aggiungerlo al tuo profilo LinkedIn. È un certificato di completamento di Coddy, non una qualifica accreditata.
Altri percorsi di apprendimento
Gli stessi corsi, organizzati per un ruolo diverso. I progressi si mantengono: un corso completato in un percorso vale per ogni percorso che lo include.