Es un sencillo algoritmo de ordenamiento
. 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. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo
obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas "burbujas". También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo uno de los más sencillos de implementar.
Una manera simple de expresar el ordenamiento de burbuja en pseudocódigo es la siguiente:
-
-
-
-
-
-
-
|
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.
Esta comparación se repite en el centro de los dos bucles, dando lugar a la postre a una lista ordenada. Puede verse que el número de repeticiones solo depende de n y no del orden de los términos, esto es, si pasamos al algoritmo una lista ya ordenada, realizará todas las comparaciones exactamente igual que para una lista no ordenada. Esta es una característica de este algoritmo. Luego veremos una variante que evita este inconveniente
Al algoritmo de la burbuja, para ordenar un arreglo de n términos, tiene que realizar siempre el mismo número de comparaciones:
Esto es, el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos:
Por lo tanto la cota ajustada asintótica del número de comparaciones pertenece al orden de n cuadrado.
El número de intercambios i(n), que hay que realizar depende del orden de los términos y podemos diferenciar, el caso mejor, si el arreglo está previamente ordenado, y el caso peor, si el arreglo está ordenado en orden inverso:
Por lo que no se puede determinar una cota ajustada asintótica del número de intercambios, dado que éste dependerá del orden del arreglo en cuestión.
No hay comentarios.:
Publicar un comentario