Ir al contenido principal

Ordenamiento de Burbuja - Algoritmos

Introducción:

Supongamos que tenemos la siguiente lista:

A = {55, 86, 32, 12, 82, 43}

Aquí tenemos una simple lista conformada por 6 datos, supongamos que necesitas ordenar esta lista, ¿Como lo harías?, relativamente es fácil, podrías usar la función sort, que se encarga de ordenar listas, pero en ocasiones, como programadores, debemos resolver estos tipos de problemas de una forma más profesional, ¿Como?, creando nuestros propios procedimiento, sí, me refiero a los maravillosos Algoritmos, en este caso, Algoritmos de Ordenamiento.

Hoy te mostrare el funcionamiento del Ordenamiento de Burbuja, un sencillo algoritmo de ordenamiento.

¿Que es el Ordenamiento de Burbuja?

Imagen relacionada

-Como e mencionado anteriormente, el ordenamiento de burbuja es un algoritmo de ordenamiento que nos permite colocar los elementos de una lista o vector en una secuencia dada, ya sea de mayor a menor, o de menor a mayor.

Este algoritmo funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado.

A continuación te mostrare una representación del procedimiento del un algoritmo burbuja:


Gracias a Wikipedia por proporcionarme esta representación, con la cual podemos entender mejor el algoritmo.

Como podemos apreciar en el GIF, el algoritmo hace distintas comparaciones, si se compara un numero menor con uno mayor, cambian de posición, y así sucesivamente.

Podemos definirlo mejor de la siguiente manera:

"Este algoritmo realiza el ordenamiento o reordenamiento de una lista a de n valores, en este caso de n términos numerados del 0 al n-1; consta de dos bucles anidados, uno con el índice i, que da un tamaño menor al recorrido de la burbuja en sentido inverso de 2 a n, y un segundo bucle con el índice j, con un recorrido desde 0 hasta n-i, para cada iteración del primer bucle, que indica el lugar de la burbuja."

La burbuja son dos términos de la lista seguidos, j y j+1, que se comparan: si el primero es mayor que el segundo sus valores se intercambian.

Para entender mejor al algoritmo, echemos un vistazo a su pseudocódigo:
















Estas imágenes, proporcionadas por wikipedia, nos muestra uno de los procedimientos del ordenamiento de burbuja, digo uno, ya que existen varios, pero con este podemos darnos una idea del algoritmo, y de que manera podríamos implementarlo en un lenguaje de programación.

Bueno, si no les diera un ejemplo de este algoritmo, yo serie un total idiota.

A continuación les mostrare la implementación del algoritmo en Python:


# Algoritmo Ordenamiento de Burbuja. Implementación en Python

A = [55, 86, 32, 12, 82, 43]

num = len(A)
i = 0
while i < num:
      j = i
      while j < num:
              if A[i] > A[j]:
                      aux = A[i]
                      A[i] = A[j]
                      A[j] = aux

              j = j + 1
      i = i + 1

print("Lista ordenada: ")
print(A)
Lista ordenada: 
[12, 32, 43, 55, 82, 86]

En la organización Código Comentado puedes encontrar el código y las implementaciones en los otros lenguajes:


Ordenamiento de Burbuja - C++ Ordenamiento de Burbuja - Java Ordenamiento de Burbuja - C#

Ordenamiento de Burbuja - Ruby Ordenamiento de Burbuja - Python

Como podemos ver, es un algoritmo corto y muy sencillo de entender, podemos ver la comparación entre el indice i y j de la lista A, si el indice i es mayor que el indice j, entonces intercambian de posición.

La salida del programa debería quedar así:

Lista ordenada:
[12, 32, 43, 55, 82, 86]

A continuación te mostrare un Ejemplo Paso a Paso del algoritmo de burbuja, nuevamente proporcionado por Wikipedia (gracias wikipedia, por ser tan considerada con nosotros).

Ejemplo Paso a Paso:
Tomemos como ejemplo los números: "9 6 5 8 2 1", que serán ordenados de menor a mayor valor usando el método burbuja. Los elementos siguientes resaltados están siendo comparados.
Primera vuelta: ( 9 6 5 8 2 1 )  ( 6 9 5 8 2 1 ), el algoritmo compara los primeros dos elementos y los cambia porque 9 > 6 ( 6 9 5 8 2 1 )  ( 6 5 9 8 2 1 ) ( 6 5 9 8 2 1 )  ( 6 5 89 2 1 ) ( 6 5 8 9 2 1 )  ( 6 5 8 2 9 1 ) ( 6 5 8 2 9 1 )  ( 6 5 8 2 1 9 )
Segunda vuelta: ( 6 5 8 2 1 9 )  ( 5 6 8 2 1 9 ) ( 5 6 8 2 1 9 )  ( 5 6 8 2 1 9 ), como estos elementos ya están en orden, el algoritmo no hace cambios. ( 5 6 8 2 1 9 )  ( 5 6 2 81 9 ) ( 5 6 2 8 1 9 )  ( 5 6 2 1 8 9 ) ( 5 6 2 1 8 9 )  ( 5 6 2 1 8 9 )
Tercera vuelta: ( 5 6 2 1 8 9 )  ( 5 6 2 1 8 9 ) ( 5 6 2 1 8 9 )  ( 5 2 6 1 8 9 ) ( 5 2 6 1 8 9 )  ( 5 2 1 6 8 9 ) ( 5 2 1 6 8 9 )  ( 5 2 1 6 8 9 ) ( 5 2 1 6 8 9 )  ( 5 2 1 6 8 9 )
Cuarta vuelta: ( 5 2 1 6 8 9 )  ( 2 5 1 6 8 9 ) ( 2 5 1 6 8 9 )  ( 2 1 5 6 8 9 ) ( 2 1 5 6 8 9 )  ( 2 1 5 6 8 9 ) ( 2 1 5 6 8 9 )  ( 2 1 5 6 8 9 ) ( 2 1 5 6 8 9 )  ( 2 1 5 6 8 9 )
Quinta vuelta: ( 2 1 5 6 8 9 )  ( 1 2 5 6 8 9 ) ( 1 2 5 6 8 9 )  ( 1 2 5 6 8 9 ) ( 1 2 5 6 8 9 )  ( 1 2 5 6 8 9 ) ( 1 2 5 6 8 9 )  ( 1 2 5 6 8 9 ) ( 1 2 5 6 8 9 )  ( 1 2 5 6 8 9 )

Es muy interesante la forma en la que trabaja el algoritmo ¿Cierto?, puedes comprobarlo tu mismo ejecutando el código que te e facilitado.

Bueno, hemos llegado al final, espero que este articulo te fuera de ayuda, ya sea para resolver algún problema especifico o para ampliar tus conocimientos.

Buen material sobre este tema: Algoritmos de Ordenamiento PDF Español.

Recuerda que puedes seguirnos en nuestra pagina de Facebook para estar enterado nuestra actividad: https://www.facebook.com/codigocomentado/.


Resultado de imagen para github

Comentarios

Entradas más populares de este blog

Calculando el factorial de un número (ejemplo de función recursiva).

Hola, mi nombre es Antonio Alfonso Martínez y en el presente artículo me dispongo a explicar un sencillo método para calcular el factorial de un número haciendo uso del concepto de recursividad. Para empezar, diremos que el factorial de un número natural "n" es el resultado del producto de todos los números desde 1 hasta dicho número "n". Así, para efectuar el calculo del factorial de un número, vamos a emplear una sencilla función a la que daremos el nombre de "factorial". De modo, que, partiendo del hecho de que el factorial de 1 y 0 es 1, construiremos nuestra función (a la que daremos el nombre de "factorial") para realizar el calculo del factorial de 5: Lo que hace esta función, es tomar como argumento un número "n". de modo que si este es 0 o 1 ("if n==0 or n==1:") la función devolverá directamente como resultado el número 1 ("resultado=1"). Sin embargo si dicho número "n" es mayor que...

Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones

PRÓLOGO El libro Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones nace como fruto de años de docencia en materias relacionadas: Algorítmica, Programación, Lenguaje C y Java, entre otros.  Con el paso del tiempo he constatado que aprender un lenguaje de programación es relativamente sencillo y sobre este tema existen muchos y muy buenos textos. Pero aprender a programar es algo totalmente distinto, que necesita de un mayor esfuerzo y abordar el problema desde otra perspectiva. Siempre utilizo la metáfora del pianista para explicar el tándem programar/lenguaje de programación: saber tocar las notas de un piano es relativamente fácil, tan solo debemos anotar en cada una de las teclas a qué nota musical corresponde. Esto sería similar a conocer un lenguaje de programación. Es muy sencillo utilizar un if o entender la mecánica de un while .  Volviendo al piano: una vez que dominamos la relación tecla/nota, un pianista debe aprender muchas ot...

Cálculo de sumatorios entre dos números, con python (ejercício básico).

En programación, los ciclos, constituyen una herramienta de gran utilidad, en aquellos casos en los que nos vemos necesitados de efectuar una determinada operación, repetidas veces. En el presente artículo me propongo exponer, la realización de un sencillo programa para calcular el sumatorio entre dos números cualquiera, escogidos por el usuario, haciendo uso, precisamente de un ciclo “for”. De ese modo, para empezar, lo primero que haremos, será pedir a nuestro usuario que introduzca los dos números que delimitan el rango numérico sobre el que vamos a calcular dicho sumatorio. De este modo hemos comenzado creando una variable (“n1”) la cual será igual al dato numérico, en formato entero (“int”) introducido por el usuario (en este ejemplo el primer número era el 0), mediante un “input”, tal y como se aprecia en la imagen. Una vez establecido el primer número que delimita nuestro rango, habremos de hacer lo mismo con el segundo número para delimitarlo, ...