Repaso: bucles optimizados
Parte de la sección Lógica y Flujo del Journey de C# de Coddy. Lección 17 de 66.
Desafío
IntermedioSe te ha asignado la tarea de optimizar un algoritmo de búsqueda que procesa un conjunto de datos grande. Crea un método llamado OptimizeSearchAlgorithm que:
- Acepte como parámetros un arreglo dentado de enteros (
int[][]) y un valor objetivo - Implemente cuatro enfoques diferentes para encontrar el valor objetivo:
- Usando un bucle for tradicional sin almacenar en caché las longitudes de los arreglos
- Usando un bucle for con las longitudes de los arreglos almacenadas en caché
- Usando un bucle foreach con un contador
- Usando un método auxiliar para comprobar si el valor coincide con el objetivo
- Devuelva el número total de coincidencias encontradas usando el enfoque optimizado (con las longitudes almacenadas en caché)
El método debe demostrar todas las técnicas de mejora de bucles abordadas en este capítulo.
Pruébalo tú mismo
public class OptimizeSearchAlgorithm
{
public static int optimizeSearchAlgorithm(int[][] data, int target)
{
// Escribe tu solución aquí
}
// Agrega cualquier método auxiliar que necesites
}Todas las lecciones de Lógica y Flujo
1Arrays multidimensionales
Conceptos básicos de arrays 2DDeclaración e inicialización de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DArrays irregularesOperaciones comunes con matricesRepaso: arrays multidimensionales4Técnicas de control de flujo
Retornos anticipadosCláusulas de guardaSentencias de salto (goto)Break y ContinueAplanar condicionales anidados7Operadores lógicos avanzados
Evaluación de cortocircuitoOperadores lógicos condicionalesPrecedencia de operadoresRepaso: operadores avanzados2Toma de decisiones avanzada
Múltiples condicionesLógica booleana complejaComparación entre If y SwitchSentencias Switch anidadasRepaso: decisiones avanzadas5Manejo de excepciones
Fundamentos de Try-CatchTipos de excepcionesMúltiples bloques CatchTrabajo con archivosBloque FinallyUso de Using frente a Try-FinallyExcepciones personalizadasRepaso: manejo de errores3Mejoras de bucles
Rendimiento de buclesIteración de estructuras complejasCada tipo de bucleRefactorización de buclesRepaso: bucles optimizados6Manejo de valores nulos
Conceptos básicos de referencias nulasTipos de valor anulablesPatrones de comprobación de valores nulosProgramación defensivaRepaso: seguridad frente a valores nulosPractica por tu cuenta: Compilador de C# online