Ordenamiento Por Burbujas
Ordenamiento Por Burbujas
Ordenamiento Por Burbujas
Se basa en recorrer el array ("realizar una pasada") un cierto número de veces, comparando
pares de valores que ocupan posiciones adyacentes (0-1,1-2,...). Si ambos datos no están
ordenados, se intercambian. Esta operación se repite n-1 veces, siendo n el tamaño del
conjunto de datos de entrada. Al final de la última pasada el elemento mayor estará en la
última posición; en la segunda, el segundo elemento llegará a la penúltima, y así
sucesivamente.
Burbuja mejorada
Existe una forma muy obvia para mejorar el algoritmo de la burbuja. Basta con tener en
cuenta la posibilidad de que el conjunto esté ordenado en algún paso intermedio. Si el bucle
interno no necesita realizar ningún intercambio en alguna pasada, el conjunto estará ya
ordenado.
Veamos el mismo ejemplo que el caso anterior procesado mediante el algoritmo mejorado:
4065770297
0456702779
0456027779
0450267779
0402567779
0024567779
0024567779
En el mejor caso (si ya está ordenado) realiza TAM-1 comparaciones. En el peor caso (el
elemento menor estaba situado al fin del array) se necesitan las mismas pasadas que antes y
el orden es TAM2. En el caso medio el orden es proporcional a TAM2/2. Obsérvese que
éste algoritmo tiene una complejidad computacional en el peor caso igual al de la burbuja
simple, aunque en término medio es aproximadamente dos veces más eficiente (requiere la
mitad de tiempo para ejecutarse).
Método de selección
Este método considera que el array está formado por 2 partes: una parte ordenada (la
izquierda) que estará vacía al principio y al final comprende todo el array; y una parte
desordenada (la derecha) que al principio comprende todo el array y al final estará vacía.
El algoritmo toma elementos de la parte derecha y los coloca en la parte izquierda;
Empieza por el menor elemento de la parte desordenada y lo intercambia con el que ocupa
su posición en la parte ordenada. Así, en la la primera iteración se busca el menor elemento
y se intercambia con el que ocupa la posición 0; en la segunda, se busca el menor elemento
entre la posición 1 y el final y se intercambia con el elemento en la posición 1.
De esta manera las dos primeras posiciones del array están ordenadas y contienen los dos
elementos menores dentro del array. Este proceso continúa hasta ordenar todos los
elementos del array.
En cada pasada se coloca un elemento en su lugar, y la variable e marca donde empezar la
búsqueda en la parte desordenada, que será secuencial si no tenemos más información. La
búsqueda del siguiente elemento menor comienza suponiendo que dicho elemento es e. Se
comprueba la hipótesis comparándolo con cada uno de los restantes. Si se encuentra uno
menor, se intercambia.
Pseudocódigo en C
//Metodo Burbuja
#include<iostream>
#include<conio.h>
for(i=0;i<5;i++){
for(j=0;j<4;j++){
if(array[j] > array[j+1]){
aux = array[j];
array[j] = array[j+1];
array[j+1] = aux;
}
}
}
getch();
return 0;
}
Conclusión