java

Java: mezclar elementos de arreglo

En este post sobre Java te mostraré cómo mezclar un arreglo, es decir, ordenar los elementos de un arreglo de manera aleatoria.

Mezclar elementos de arreglo en Java – Orden aleatorio

Mezclar un arreglo en Java sirve para varias cosas, por ejemplo, si cuentas con una lista de canciones o una lista de cosas que necesitas que tengan un orden distinto.

Como sea, al final vamos a obtener un arreglo ordenado de manera aleatoria o mejor dicho, un arreglo desordenado. Y nunca tendrá el mismo orden, pues los elementos van a ser organizados al azar.

Algoritmo general

Lo que tenemos que hacer para aleatorizar un arreglo en Java es simplemente recorrer el arreglo en cuestión y en cada paso mover un elemento a una posición aleatoria.

Para obtener el número aleatorio vamos a usar ThreadLocalRandom que en pocas palabras devuelve un número aleatorio; usaremos esta función para obtener un índice aleatorio.

public static int getRandomNumber(int min, int max) {
    // nextInt regresa en rango pero con límite superior exclusivo, por eso sumamos 1
    return ThreadLocalRandom.current().nextInt(min, max + 1);
}

Mezclar arreglo en Java

Entonces el código completo queda así:

import java.util.concurrent.ThreadLocalRandom;

public class Main {

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        // Primero lo imprimimos de manera original
        System.out.println("Original:");
        for (int value : array) System.out.print(value + " ");
        for (int currentIndex = 0; currentIndex < array.length; currentIndex++) {
            // Restamos 1 de array.length porque los índices comienzan en 0
            int randomIndex = getRandomNumber(0, array.length - 1);
            // Hacemos el intercambio...
            // Almacenamos el actual en una temporal
            int temp = array[currentIndex];
            // Al actual le colocamos lo que haya en un índice aleatorio
            array[currentIndex] = array[randomIndex];
            // Y lo que había en el índice aleatorio lo remplazamos por lo que hay en temporal
            array[randomIndex] = temp;
        }
        // Y al final lo volvemos a imprimir, ya desordenado
        System.out.println("\nDesordenado");
        for (int value : array) System.out.print(value + " ");
    }

    public static int getRandomNumber(int min, int max) {
        // nextInt regresa en rango pero con límite superior exclusivo, por eso sumamos 1
        return ThreadLocalRandom.current().nextInt(min, max + 1);
    }
}

Como puedes ver, primero se imprime el arreglo original. Luego lo recorremos y en cada iteración obtenemos un índice aleatorio para intercambiar los elementos.

Finalmente imprimimos el arreglo de nuevo y sus elementos ya van a estar desordenados. En este caso fue un arreglo de tipo int pero puede ser un arreglo de cualquier tipo.

También puedes aprender más sobre Java.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

6 horas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

7 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

7 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

7 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

7 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

7 días hace

Esta web usa cookies.