sábado, 2 de abril de 2016

El algoritmo de ordenación “Bubble Sort” en Java



Una de las operaciones más comunes con arrays es la ordenación. Un algoritmo de ordenación clasifica un conjunto de datos de forma ascendente o descendente.

El algoritmo “Bubble Sort” se basa en comparar cada elemento del conjunto a ordenar con el siguiente. Si estos elementos no están ordenados, entonces se intercambian. En este algoritmo es necesario revisar varias veces todo el conjunto hasta que no sea necesario realizar más intercambios.



El algoritmo “Bubble Sort” ordena los valores almacenados en el array numeros.

int[] numeros = {6, 5, 3, 1, 2};
int tmp;
for (int i=0; i < numeros.length-1; i++)
for (int j=i+1; j < numeros.length; j++)
if (numeros[i] > numeros[j]) {
tmp = numeros[i];
numeros[i] = numeros[j];
numeros[j] = tmp;
}

La variable tmp se utiliza para realizar el intercambio de los valores almacenados en las posiciones i y j del array. Primero, se almacena el valor de numeros[i] en tmp, después se almacena el valor de numeros[j] en numeros[i], por último se almacena el valor de tmp en numeros[j] y finaliza el intercambio.

El algoritmo utiliza un for anidado. La variable de control del primer for es i y la del segundo for es j. La variable i del primer for toma los valores 0, 1, 2 y 3. Para i = 0, la variable j del segundo for toma los valores 1, 2, 3 y 4. Para i = 1, la variable j toma los valores 2, 3 y 4. Para i = 2, la variable j toma los valores 3, 4. Para i = 3, la variable j toma el valor de 4.

En diagramas se muestra el array de números antes y después de hacer el intercambio de los valores que se comparan cada vez. 

Comparación de numeros[0] y numeros[1].



Comparación de numeros[0] y numeros[2].



Comparación de numeros[0] y numeros[3].



Comparación de numeros[0] y numeros[4].



Comparación de numeros[1] y numeros[2].



Comparación de numeros[1] y numeros[3].



Comparación de numeros[1] y numeros[4].



Comparación de numeros[2] y numeros[3].



Comparación de numeros[2] y numeros[4].



Comparación de numeros[3] y numeros[4].




Al finalizar el algoritmo, el array ordenado es {1, 2, 3, 5, 6}.


Espero haber ayudado en algo. Hasta la próxima oportunidad!











  

No hay comentarios:

Publicar un comentario en la entrada