Algorithmen und Datenstrukturen in C#: Ein praktischer Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Algorithmen und Datenstrukturen in C#: Von der Theorie zur Praxis



Das Verständnis von Algorithmen und Datenstrukturen ist die Grundlage professioneller C#-Entwicklung. Unabhängig davon, ob Sie eine hochbelastete Webanwendung mit ASP.NET Core oder eine Desktop-Anwendung mit WPF schreiben, wirkt sich die Wahl der richtigen Datenstruktur und des effizienten Algorithmus direkt auf Leistung, Lesbarkeit und Skalierbarkeit des Codes aus. In diesem Artikel analysieren wir die wichtigsten Datenstrukturen und Algorithmen anhand konkreter C#-Codebeispiele, die Sie sofort in Ihren Projekten anwenden können.



1. Stack und Queue in C#



Stack (LIFO — Last In, First Out) und Queue (FIFO — First In, First Out) sind grundlegende Datenstrukturen, die in .NET integriert sind und häufig in realen Aufgaben verwendet werden: von der Verarbeitung von Methodenaufrufen bis zur Aufgabenverwaltung.



Stack in C#

Ein Stack wird oft für die Implementierung von Rückgängig-Funktionen (Undo) oder für die Syntaxanalyse verwendet. In C# wird der Stack durch die Klasse Stack<T> repräsentiert.

using System;using System.Collections.Generic;

public class StackExample{ public static void Main() { Stack<string> browserHistory = new Stack<string>(); // Elemente hinzufügen (Push) browserHistory.Push("Startseite"); browserHistory.Push("Nachrichten"); browserHistory.Push("Artikel über C#"); Console.WriteLine($"Letzte Seite: {browserHistory.Peek()}"); // Artikel über C# // Oberstes Element entfernen und zurückgeben (Pop) string lastPage = browserHistory.Pop(); Console.WriteLine($"Zurück von: {lastPage}"); // Artikel über C# Console.WriteLine($"Aktuelle Seite: {browserHistory.Peek()}"); // Nachrichten }}


Queue in C#

Eine Queue ist ideal für die Verarbeitung von Aufgaben in der Reihenfolge ihres Eingangs (z. B. Druckwarteschlange oder Nachrichtenverarbeitung). Verwenden Sie die Klasse Queue<T>.

using System;using System.Collections.Generic;

public class QueueExample{ public static void Main() { Queue<string> printQueue = new Queue<string>(); // Am Ende der Queue hinzufügen (Enqueue) printQueue.Enqueue("Dokument1.pdf"); printQueue.Enqueue("Foto.png"); printQueue.Enqueue("Bericht.docx"); Console.WriteLine($"Erstes in der Warteschlange: {printQueue.Peek()}"); // Dokument1.pdf // Vom Anfang der Queue entfernen (Dequeue) string firstJob = printQueue.Dequeue(); Console.WriteLine($"Wird gedruckt: {firstJob}"); // Dokument1.pdf Console.WriteLine($"Nächstes: {printQueue.Peek()}"); // Foto.png }}


Wichtig: In .NET gibt es auch ConcurrentQueue<T> für Multithreading-Szenarien, und Stack<T> unterstützt keinen Indexzugriff – nur das oberste Element.



2. Array-Sortierung: Quicksort



Obwohl C# eine integrierte Methode Array.Sort() bietet, ist das Verständnis von Sortieralgorithmen für Vorstellungsgespräche und Optimierungen notwendig. Quicksort ist einer der effizientesten Algorithmen mit einer Komplexität von O(n log n) im Durchschnittsfall.



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]; // Pivot-Element ist das letzte int i = left - 1;

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

Blogs

Buchempfehlungen