Está en la página 1de 6

TALLER JAVA, Dia#1

Algoritmo Ejemplo Práctico

El ejemplo práctico consiste en realizar el “BubbleSort” u Ordenamiento por


Burbujas, dicho algoritmo ordena los números contenidos en un arreglo de menor a
mayor, o viceversa.

Supongamos que tenemos el siguiente arreglo de números:

8 4 6 2

Es decir, en dicho arreglo:


n[0]=8
n[1]=4
n[2]=6
n[3]=2
Y deseamos ordenarlos dentro del arreglo de menor a mayor, utilizando el
ordenamiento por burbuja.
Entonces para realizarlo lo que haremos es posicionarnos en la primera casilla no
comprobada de nuestro arreglo, y comparar dicho número con sus sucesores. Si se
encuentra un número menor, se intercambiará y se colocará el valor en la primera
posición. Es decir:

Arreglo Inicial-Pasada 1
Compararemos el n[0], con los números siguientes:

8 4 6 2
Sub-Pasada 1
¿n[0]>n[1]?
Donde n[0]=8 y n[1]=4, por lo que, estamos preguntando: ¿es 8>4?
Ya que cuatro es menor a ocho, se hace un intercambio:
En donde de:

8 4 6 2

Pasamos a:

4 8 6 2

Por lo que en nuestro nuevo arreglo tendríamos:


n[0]=4
n[1]=8
n[2]=6
n[3]=2

Sub-Pasada 2
¿n[0]>n[2]?
Donde n[0]=4 y n[2]=6, por lo que, estamos preguntando: ¿es 4>6?
Ya que seis no es menor a cuatro, no se realiza el intercambio, por lo que el
arreglo continua igual.

Sub-Pasada 3
¿n[0]>n[3]?
Donde n[0]=4 y n[3]=2, por lo que, estamos preguntando: ¿es 4>2?
Ya que dos es menor a cuatro, se hace un intercambio:
En donde de:

4 8 6 2

Pasamos a:

2 8 6 4
Por lo que en nuestro nuevo arreglo tendríamos:
n[0]=2
n[1]=8
n[2]=6
n[3]=4

Como podemos ver ya hemos recorrido todos los sucesores por lo que se termina la
primera pasada. Además, ya tenemos el número menor posicionado en la primera
posición. Por lo que pasamos a la pasada dos.

Arreglo Inicial-Pasada 2
Compararemos el n[1], con los números siguientes:

2 8 6 4

Sub-Pasada 1
¿n[1]>n[2]?
Donde n[1]=8 y n[2]=6, por lo que, estamos preguntando: ¿es 8>6?
Ya que seis es menor a ocho, se hace un intercambio:
En donde de:

2 8 6 4

Pasamos a:

2 6 8 4

Por lo que en nuestro nuevo arreglo tendríamos:


n[0]=2
n[1]=6
n[2]=8
n[3]=4
Sub-Pasada 2
¿n[1]>n[3]?
Donde n[1]=6 y n[3]=4, por lo que, estamos preguntando: ¿es 6>4?
Ya que cuatro es menor a seis, se hace un intercambio:
En donde de:

2 6 8 4

Pasamos a:

2 4 8 6

Por lo que en nuestro nuevo arreglo tendríamos:


n[0]=2
n[1]=4
n[2]=8
n[3]=6

Como podemos ver ya hemos recorrido todos los sucesores por lo que se termina la
segunda pasada. Además, ya tenemos el segundo número menor posicionado en la
segunda posición. Por lo que pasamos a la pasada tres.

Arreglo Inicial-Pasada 3
Compararemos el n[2], con los números siguientes:

2 4 8 6

Sub-Pasada 1
¿n[2]>n[3]?
Donde n[2]=8 y n[3]=6, por lo que, estamos preguntando: ¿es 8>6?
Ya que seis es menor a ocho, se hace un intercambio:
En donde de:

2 4 8 6
Pasamos a:

2 4 6 8

Por lo que en nuestro nuevo arreglo tendríamos:


n[0]=2
n[1]=4
n[2]=6
n[3]=8

Como podemos ver ya hemos recorrido todos los sucesores por lo que se termina la
tercera pasada.
El arreglo está ordenado por lo que se termina el algoritmo.
No se hace una cuarta pasada ya que no hay casillas o números sucesores del n[3].

Así que nuestro algoritmo quedaría así

posicion_actual=0;
posicion_comparar=posicion_actual+1;
int temporal;
Mientras(posicion_actual < tamaño_arreglo-1) hacer
Mientras(posicion_comparar < tamaño_arreglo) hacer{
Si(arreglo[posicion_actual]>arreglo[posicion_comparar])
temporal = arreglo[posicion_actual]
arreglo[posicion_actual] = arreglo[posicion_comparar]
arreglo[posicion_comparar] = temporal;
posicion_comparar++;
}
posicion_actual++;
posicion_comparar = posicion_actual+1;
}
ACLARACIONES DE ALGORITMO
● Se utiliza una variable entera para almacenar temporalmente uno de
los valores, sino es imposible hacer el cambio, ya que uno de estos se
perdería.
● El primer While se realiza hasta “tamaño_arreglo-1” ya que la última
posición del arreglo nunca se compara ya que no hay sucesores a
esta.

También podría gustarte