Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Ordenar un array

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

La fila del patio

El profesor de gimnasia quiere a toda la clase en fila, del más bajo al más alto.

No mira a todos a la vez. Compara a dos vecinos. Si el de la izquierda es más alto, los cambia de sitio.

Repite eso hasta que nadie tenga que cambiar. Un programa ordena una lista igual.

Palabras clave

PalabraQué significaEjemplo
OrdenarPoner los valores de menor a mayor, o al revés.{1, 3, 4, 5, 8}
IntercambiarCambiar de sitio los valores de dos cajas.swap(values, 0, 1)
Variable temporalUna caja de ayuda para no perder un valor mientras intercambias.int temporary
BurbujaUn método de ordenar: compara vecinos y los cambia si están al revés.el valor grande sube
PasadaCada vez que recorres el array comparando vecinos.la pasada 2

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cambiar dos valores de sitio

Tienes un vaso de agua y otro de zumo. Quieres que cada uno esté en el vaso del otro.

Si viertes uno en el otro, se mezclan. Necesitas un tercer vaso vacío.

En Java, el tercer vaso es una variable temporal. Guarda un valor mientras haces el cambio.

Sin él, el primer valor se pisa y se pierde.

Pruébalo: intercambiar dos cajas

Código: java
public class Main {
    public static void main(String[] args) {
        int[] values = {5, 3};

        // Primero guardamos el 5 en el tercer vaso.
        int temporary = values[0];
        values[0] = values[1];
        values[1] = temporary;

        System.out.println(values[0] + " " + values[1]);

        // Quita la línea de temporary y mira qué pasa.
    }
}

El método de la burbuja

Recorres el array comparando cada caja con la siguiente. Si están al revés, las intercambias.

Así, en cada pasada, el valor más grande sube hasta el final, como una burbuja. Después de la primera pasada, el último ya está en su sitio.

Repites con las cajas que quedan.

Ejemplo resuelto: ordenar 5, 3, 8, 1, 4

PasadaCambios que se hacenCómo queda el array
Antes de empezar-5 3 8 1 4
15 y 3, 8 y 1, 8 y 43 5 1 4 8
25 y 1, 5 y 43 1 4 5 8
33 y 11 3 4 5 8
4Ninguno: ya está ordenado1 3 4 5 8

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Dos bucles anidados

El bucle de fuera cuenta las pasadas. El de dentro compara vecinos.

En cada pasada el último valor ya está bien puesto, así que el de dentro llega un poco menos lejos. Usamos values.length - pass como límite.

Para comparar vecinos usamos values[i] y values[i + 1].

Pruébalo: ordenar las notas

Código: java
public class Main {
    public static void main(String[] args) {
        int[] marks = {5, 3, 8, 1, 4};

        for (int pass = 1; pass < marks.length; pass++) {
            for (int i = 0; i < marks.length - pass; i++) {
                // Si están al revés, intercambiamos los vecinos.
                if (marks[i] > marks[i + 1]) {
                    int temporary = marks[i];
                    marks[i] = marks[i + 1];
                    marks[i + 1] = temporary;
                }
            }
            // Arrays.toString escribe el array entero de una vez.
            System.out.println("Pasada " + pass + ": "
                + java.util.Arrays.toString(marks));
        }
    }
}

Para ordenar al revés

Consejo

Cambia solo la comparación: usa < en lugar de >. Entonces el valor más pequeño es el que sube al final. La lista queda de mayor a menor.

Repaso rápido

Inténtalo

Repaso rápido

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

4 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.