Formas de ordenar un array en Java

Hola a todos, hoy os enseñare las distintas formas que tenemos para ordenar un array.

Ordenar un array es muy importante, ya sea de números o de cadenas, puede haber casos en que nos interese que los datos esten ordenados en un array. Tenemos varias formas de hacerlo, tanto con números como con cadenas:

  • Intercambio: consiste en comparar el primer valor con el resto de las posiciones posteriores, cambiando el valor de las posiciones en caso de que el segundo sea menor que el primero comparado, después la segunda posición con el resto de posiciones posteriores. Te enseñamos un ejemplo de como funciona.

 

    • Método intercambio con números:
    • Método intercambio con cadenas:

Veamos un ejemplo:

  • Burbuja: consiste en comparar el primero con el segundo, si el segundo es menor que el primero se intercambian los valores. Después el segundo con el tercero y así sucesivamente, cuando no haya ningún intercambio, el array estará ordenado. Lo peor de este método de ordenación, es que tiene una complejidad de O(n2) haciendo que cuanto mas valores a ordenar mayor tiempo tardara en ordenar. Te mostramos un ejemplo de como funciona:

 

    • Método burbuja para números:
    • Método burbuja para cadena:

Veamos un ejemplo completo:

  • Quicksort:  consiste en ordenar un array mediante un pivote, que es un punto intermedio en el array, es como si se ordenaran pequeños trozos del array, haciendo que a la izquierda esten los menores a ese pivote y en la derecha lo mayores a este, después se vuelve a calcular el pivote de trozos de listas. Usa recursividad. Le pasamos el array, su posición inicial y su posición final como parámetro. Tiene una complejidad de O(n log2 n), haciendo que mejore el rendimiento aun teniendo muchos valores que ordenar. Te dejo un ejemplo:

ejemplo ordenacion quicksortTambién os dejo un enlace donde lo explica más gráficamente, pincha aquí para verlo.

    • Quicksort con números:
    • Quicksort con cadenas:

Veamos un ejemplo completo:

  • Método sort de java.util.Arrays: para ejecutarlo escribimos Arrays.sort(array a ordenar); simplemente insertamos como parámetro el array que queremos ordenar. Tiene varios métodos para distintos tipos. Te mostramos un ejemplo practico:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

7 comentarios

  1. RjLebrancón

    Madre de Dios!! supongo que para los expertos esto será música celestial… yo, pobre y triste analfabeto de las ciencias informáticas, me quedo como estaba. De todas formas y como miembro del club dejo el comentario y paso a otra página… quizá me entere de algo en ella.
    Traffic-Club
    RjL-Cine de Balcón
    Saludos,
    RjLebrancón

  2. Francisco Masa

    Como el compañero RjLebrancón, no puedo hacer ningún comentario de valor ante tal despliegue de fórmulas y códigos, pero te saludo como miembro de Traffic-Club desde «Millas y birras»

  3. Wiskas

    Podrías explicarme teniendo 3 vectores independientes, como ordenarlos con quicksort de forma que si ordenas por nombre coincida con su apellido y su dni y si ordenas por DNI coincida con su nombre etc,,,,

  4. Disco Duro de Roer Post author

    Lo mas fácil es hacer un array que contenga objetos, que en tu caso tendría apellido, DNI y nombre, así al cambiar se cambiarían los 3 datos que necesitas que en realidad son 1.

    Otra forma, algo mas complicada,seria modificando el método para que aceptase una matriz en lugar de un vector y personalizarlo según tu gusto.

    También puedes pasar los 3 arrays y a la hora del intercambio que también intercambie esas posiciones.

    Yo te recomendaría la primera opción.

    Si necesitas algo mas, puedes comentarlo por aqui o mandar un mensaje a administrador@discoduroderoer.es

  5. Andres O.

    Hola amigo, excelente explicacion.
    Pero creo que el grafico esta mal, el pivote en la segunda llamada no es 21 si no es 15.
    La lista en la primera pasada queda: 24,21,15,46,65,88,75,85,76,99,84,79
    La lista se divide en dos:
    24,21,15,46,65
    88,75,85,76,99,84,79
    Si divides el 4 que es el valor que tiene i te dara 2, la posicion lista[2]=15
    Lo puedes comprobar haciendo un:
    int pivote=lista1[(i+j)/2];
    System.out.println(«Pivote: «+pivote);

    Pivote: 65
    Pivote: 15
    Pivote: 24
    Pivote: 46
    Pivote: 76
    Pivote: 76
    Pivote: 99
    Pivote: 88
    Pivote: 84

    O tal vez este haciendo algo mal yo, no me quiero quedar con la duda.
    Por cierto buen pagina la tuya te felicito!

  6. Hebert

    Creen que puedan explicarme un poco el primer metodo de ordenar valores aleatorios?, solo la parte donde los ordenan

  7. adam

    hello:):):):) what is wrong with this code to order a list of number?????

    static int ordenarLista (ArrayList listaNum) {

    int temp;

    for (int i = 0; i < listaNum.size(); i++)
    {
    for (int j = i + 1; j listaNum.get(j))
    {
    temp = listaNum.get(i);
    listaNum.get(i) = listaNum.get(j);
    temp = listaNum.get(j);
    }
    }
    }
    return temp;
    }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539