Algoritmos y estructuras de datos en C#: guía práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Algoritmos y estructuras de datos en C#: de la teoría a la práctica



Comprender los algoritmos y las estructuras de datos es la base del desarrollo profesional en C#. Independientemente de si escribes una aplicación web de alta carga en ASP.NET Core o una aplicación de escritorio en WPF, la elección de la estructura de datos correcta y el algoritmo eficiente impacta directamente en el rendimiento, la legibilidad y la escalabilidad del código. En este artículo, analizaremos las estructuras de datos y algoritmos clave con ejemplos concretos de código C# que podrás aplicar de inmediato en tus proyectos.



1. Pila (Stack) y cola (Queue) en C#



Pila (LIFO — Last In, First Out) y cola (FIFO — First In, First Out) son estructuras de datos básicas integradas en .NET y ampliamente utilizadas en tareas reales: desde el procesamiento de llamadas a métodos hasta la gestión de tareas.



Pila en C#

La pila se utiliza a menudo para implementar la "reversión" de acciones (undo) o el análisis sintáctico. En C#, la pila está representada por la clase Stack<T>.

using System;using System.Collections.Generic;

public class StackExample{ public static void Main() { Stack<string> browserHistory = new Stack<string>(); // Agregar elementos (Push) browserHistory.Push("Página principal"); browserHistory.Push("Noticias"); browserHistory.Push("Artículo sobre C#"); Console.WriteLine($"Última página: {browserHistory.Peek()}"); // Artículo sobre C# // Eliminar y devolver el elemento superior (Pop) string lastPage = browserHistory.Pop(); Console.WriteLine($"Regresando desde: {lastPage}"); // Artículo sobre C# Console.WriteLine($"Página actual: {browserHistory.Peek()}"); // Noticias }}


Cola en C#

La cola es ideal para procesar tareas en el orden en que llegan (por ejemplo, cola de impresión o procesamiento de mensajes). Usa la clase Queue<T>.

using System;using System.Collections.Generic;

public class QueueExample{ public static void Main() { Queue<string> printQueue = new Queue<string>(); // Agregar al final de la cola (Enqueue) printQueue.Enqueue("Documento1.pdf"); printQueue.Enqueue("Foto.png"); printQueue.Enqueue("Informe.docx"); Console.WriteLine($"Primero en imprimir: {printQueue.Peek()}"); // Documento1.pdf // Eliminar del inicio de la cola (Dequeue) string firstJob = printQueue.Dequeue(); Console.WriteLine($"Imprimiendo: {firstJob}"); // Documento1.pdf Console.WriteLine($"Siguiente: {printQueue.Peek()}"); // Foto.png }}


Importante: En .NET también existe ConcurrentQueue<T> para escenarios multihilo y Stack<T> no admite acceso por índice, solo la cima.



2. Ordenamiento de arreglos: ordenamiento rápido (QuickSort)



Aunque en C# existe el método integrado Array.Sort(), comprender los algoritmos de ordenamiento es necesario para entrevistas y optimización. El ordenamiento rápido es uno de los algoritmos más eficientes con una complejidad de O(n log n) en el caso promedio.



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]; // elemento pivote — el último int i = left - 1;

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

Blogs

Book Recommendations