Ejercicio Java
En este ejercicio, crearás un programa en Java que implemente varias buenas prácticas de programación y optimización de código. El objetivo es escribir un código limpio y eficiente, aplicando técnicas como la reducción de complejidad, la mejora de la legibilidad y la optimización de algoritmos. Trabajarás con estructuras de datos y algoritmos comunes, asegurándote de que tu código sea fácil de mantener, entender y ejecutar de manera eficiente.
Instrucciones:
- Escribe un programa que resuelva un problema común (por ejemplo, ordenar una lista de elementos) utilizando un algoritmo eficiente.
- Aplica técnicas de optimización, como la mejora en el uso de memoria y el tiempo de ejecución.
- Refactoriza el código asegurándote de que sea legible, modular y bien comentado.
- Realiza pruebas de rendimiento para comparar el rendimiento de tu implementación antes y después de la optimización.
Este ejercicio te ayudará a mejorar tus habilidades en la escritura de código optimizado y limpio, siguiendo las mejores prácticas de desarrollo para obtener aplicaciones Java de alto rendimiento.
Ver código de ejemplo
import java.util.Arrays;
public class OrdenacionOptimizada {
public static void quickSort(int[] arreglo, int bajo, int alto) {
if (bajo < alto) {
int indicePivote = particionar(arreglo, bajo, alto);
quickSort(arreglo, bajo, indicePivote - 1);
quickSort(arreglo, indicePivote + 1, alto);
}
}
public static int particionar(int[] arreglo, int bajo, int alto) {
int pivote = arreglo[alto];
int i = (bajo - 1);
for (int j = bajo; j < alto; j++) {
if (arreglo[j] < pivote) {
i++;
int temp = arreglo[i];
arreglo[i] = arreglo[j];
arreglo[j] = temp;
}
}
int temp = arreglo[i + 1];
arreglo[i + 1] = arreglo[alto];
arreglo[alto] = temp;
return i + 1;
}
public static void main(String[] args) {
int[] numeros = { 12, 11, 13, 5, 6, 7 };
System.out.println("Arreglo original: " + Arrays.toString(numeros));
long inicio = System.nanoTime();
quickSort(numeros, 0, numeros.length - 1);
long fin = System.nanoTime();
System.out.println("Arreglo ordenado: " + Arrays.toString(numeros));
System.out.println("Tiempo de ejecución (en nanosegundos): " + (fin - inicio));
}
}
Salida:
Arreglo original: [12, 11, 13, 5, 6, 7]
Arreglo ordenado: [5, 6, 7, 11, 12, 13]
Tiempo de ejecución (en nanosegundos): 21423
Este programa implementa el algoritmo **QuickSort**, una de las mejores soluciones para ordenar arreglos debido a su eficiencia en términos de tiempo de ejecución en la mayoría de los casos. Al realizar la optimización, el código es más eficiente tanto en memoria como en tiempo, y se refactoriza para ser modular y fácil de entender.