Algorithmes et structures de données en C# : guide pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Algorithmes et structures de données en C# : de la théorie à la pratique



La compréhension des algorithmes et des structures de données est le fondement du développement professionnel en C#. Que vous écriviez une application web à forte charge sur ASP.NET Core ou une application de bureau sur WPF, le choix de la bonne structure de données et d'un algorithme efficace influence directement les performances, la lisibilité et l'évolutivité du code. Dans cet article, nous analyserons les structures de données et les algorithmes clés à l'aide d'exemples concrets de code C# que vous pourrez immédiatement appliquer dans vos projets.



1. Pile (Stack) et file d'attente (Queue) en C#



Pile (LIFO — Last In, First Out) et file d'attente (FIFO — First In, First Out) sont des structures de données de base intégrées dans .NET et largement utilisées dans des tâches réelles : du traitement des appels de méthodes à la gestion des tâches.



Pile en C#

La pile est souvent utilisée pour implémenter des actions "annuler" (undo) ou l'analyse syntaxique. En C#, la pile est représentée par la classe Stack<T>.

using System;using System.Collections.Generic;

public class StackExample{ public static void Main() { Stack<string> browserHistory = new Stack<string>(); // Ajout d'éléments (Push) browserHistory.Push("Page d'accueil"); browserHistory.Push("Actualités"); browserHistory.Push("Article sur C#"); Console.WriteLine($"Dernière page : {browserHistory.Peek()}"); // Article sur C# // Suppression et retour de l'élément du dessus (Pop) string lastPage = browserHistory.Pop(); Console.WriteLine($"Retour depuis : {lastPage}"); // Article sur C# Console.WriteLine($"Page actuelle : {browserHistory.Peek()}"); // Actualités }}


File d'attente en C#

La file d'attente est idéale pour traiter les tâches dans l'ordre de leur arrivée (par exemple, file d'attente d'impression ou traitement de messages). Utilisez la classe Queue<T>.

using System;using System.Collections.Generic;

public class QueueExample{ public static void Main() { Queue<string> printQueue = new Queue<string>(); // Ajout à la fin de la file (Enqueue) printQueue.Enqueue("Document1.pdf"); printQueue.Enqueue("Photo.png"); printQueue.Enqueue("Rapport.docx"); Console.WriteLine($"Premier à imprimer : {printQueue.Peek()}"); // Document1.pdf // Suppression du début de la file (Dequeue) string firstJob = printQueue.Dequeue(); Console.WriteLine($"En cours d'impression : {firstJob}"); // Document1.pdf Console.WriteLine($"Suivant : {printQueue.Peek()}"); // Photo.png }}


Important : Dans .NET, il existe également ConcurrentQueue<T> pour les scénarios multithreads et Stack<T> ne prend pas en charge l'accès par index — seulement le sommet.



2. Tri de tableau : tri rapide (QuickSort)



Bien que C# dispose d'une méthode intégrée Array.Sort(), la compréhension des algorithmes de tri est nécessaire pour les entretiens et l'optimisation. Le tri rapide est l'un des algorithmes les plus efficaces avec une complexité O(n log n) en moyenne.



using System;

public class QuickSortExample{ public static void QuickSort(int[] arr, int left, int right) { if (left < right) { int pivotIndex = Partition(arr, left, right); QuickSort(arr, left, pivotIndex - 1); QuickSort(arr, pivotIndex + 1, right); } }

private static int Partition(int[] arr, int left, int right) { int pivot = arr[right]; // élément pivot — le dernier int i = left - 1;

for (int j = left; j < right; j++) { if (arr[j] < pivot) { i++;

Blogs

Book Recommendations