Algoritmos

Ordenamiento de burbuja en Java

Resumen: implementar algoritmo del ordenamiento de burbuja en Java para ordenar un arreglo usando el método de la burbuja.

Vamos a ver cómo aplicar el método de burbuja a arreglos de tipo numérico (int) como a arreglos de tipo cadena (String).

Método de la burbuja en Java

Este método utiliza ciclos anidados. En el primero, simplemente recorremos todo el arreglo. En el segundo, recorremos desde el índice 0 hasta la longitud - 2.

Dentro del segundo ciclo comparamos el elemento actual con el siguiente (por eso solo llegamos hasta longitud – 2 para evitar acceder a un elemento más allá de los límites del arreglo en la última iteración) y en caso de que el actual sea mayor que el siguiente, intercambiamos.

Para intercambiar podemos implementar una variable temporal o cualquier otro método; eso sí, debemos modificar directamente al arreglo.

Función del método burbuja en Java

Veamos el método. Queda definido así:

private static void burbuja(int[] arreglo) {
    for (int x = 0; x < arreglo.length; x++) {
        // Aquí "y" se detiene antes de llegar
        // a length - 1 porque dentro del for, accedemos
        // al siguiente elemento con el índice actual + 1
        for (int y = 0; y < arreglo.length - 1; y++) {
            int elementoActual = arreglo[y],
                    elementoSiguiente = arreglo[y + 1];
            if (elementoActual > elementoSiguiente) {
                // Intercambiar
                arreglo[y] = elementoSiguiente;
                arreglo[y + 1] = elementoActual;
            }
        }
    }
}

Es una función que recibe un arreglo de enteros. En mi caso no necesito una variable temporal pues antes de hacer el intercambio, la variable elementoActual y elementoSiguiente tienen los valores originales.

Después, si es necesario, en la línea 11 y 12 hago el intercambio.

Al final no regresamos nada porque hemos modificado al arreglo directamente así que el que invoca la función puede usar el arreglo ya ordenado.

Ordenamiento de burbuja en Java con Strings

Podemos usar el método compareTo en Java para saber si una cadena es mayor o menor que otra. En este caso el código es casi el mismo, solo comparamos de manera distinta y tenemos tipo de dato cadena.

Queda así:

private static void burbuja(String[] arreglo) {
    for (int x = 0; x < arreglo.length; x++) {
        // Aquí "y" se detiene antes de llegar
        // a length - 1 porque dentro del for, accedemos
        // al siguiente elemento con el índice actual + 1
        for (int y = 0; y < arreglo.length - 1; y++) {
            String elementoActual = arreglo[y],
                    elementoSiguiente = arreglo[y + 1];
            if (elementoActual.compareTo(elementoSiguiente) > 0) {
                // Intercambiar
                arreglo[y] = elementoSiguiente;
                arreglo[y + 1] = elementoActual;
            }
        }
    }
}

¿Ascendente o descendente?

Al aplicar el código que mencioné anteriormente obtenemos un arreglo ordenado de manera ascendente. Si quieres que sea de forma descendente simplemente invierte la comparación.

En el primer caso comparamos con elementoActual > elementoSiguiente, hay que cambiarlo a elementoActual < elementoSiguiente.

Cuando ordenamos arreglos de cadena lo mismo, solo cambiamos lo que regrese compareTo a un < 0 en lugar de un > 0.

Poniendo todo junto

Llegó el momento de probar el método de ordenamiento de burbuja en Java. Todo el código queda así:

import java.util.Arrays;
/*
 * Método de burbuja en Java para ordenar arreglos
 *
 * @author parzibyte
 * @see https://parzibyte.me/blog
 * */
public class MetodoBurbuja {
    public static void main(String[] args) {
        int numeros[] = {1, 9, 23, 4, 55, 100, 1, 1, 23};
        System.out.println("Antes del método de la burbuja: " + Arrays.toString(numeros));
        burbuja(numeros);
        System.out.println("Después del método de la burbuja: " + Arrays.toString(numeros));
        String[] nombres = {"Leon", "Chris", "Jill", "Wesker", "Ada"};
        System.out.println("Antes del método de la burbuja: " + Arrays.toString(nombres));
        burbuja(nombres);
        System.out.println("Después del método de la burbuja: " + Arrays.toString(nombres));
    }

    private static void burbuja(int[] arreglo) {
        for (int x = 0; x < arreglo.length; x++) {
            // Aquí "y" se detiene antes de llegar
            // a length - 1 porque dentro del for, accedemos
            // al siguiente elemento con el índice actual + 1
            for (int y = 0; y < arreglo.length - 1; y++) {
                int elementoActual = arreglo[y],
                        elementoSiguiente = arreglo[y + 1];
                if (elementoActual > elementoSiguiente) {
                    // Intercambiar
                    arreglo[y] = elementoSiguiente;
                    arreglo[y + 1] = elementoActual;
                }
            }
        }
    }

    private static void burbuja(String[] arreglo) {
        for (int x = 0; x < arreglo.length; x++) {
            // Aquí "y" se detiene antes de llegar
            // a length - 1 porque dentro del for, accedemos
            // al siguiente elemento con el índice actual + 1
            for (int y = 0; y < arreglo.length - 1; y++) {
                String elementoActual = arreglo[y],
                        elementoSiguiente = arreglo[y + 1];
                if (elementoActual.compareTo(elementoSiguiente) > 0) {
                    // Intercambiar
                    arreglo[y] = elementoSiguiente;
                    arreglo[y + 1] = elementoActual;
                }
            }
        }
    }
}

La ejecución del código es como se ve a continuación. Por cierto, como puedes notar, utilizo Arrays.toString para convertir el arreglo a cadena fácilmente; esto es con propósitos de imprimirlos sin tener que usar mucho código.

Ordenamiento de burbuja en Java – Ejecución del código

Te invito a aprender más sobre Java en mi blog.

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…

1 semana 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…

2 semanas 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…

2 semanas 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…

2 semanas hace

Errores de Comlink y algunas soluciones

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

2 semanas 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…

2 semanas hace

Esta web usa cookies.