Algoritmo de ordenamiento:Quicksort

Bueno pues este algoritmo al principio resulta un poco complicado de entender pero en realidad no es tan complicado.
Para comprenderlo mas facilmente mira el siguiente video:

Para comprender bien como funciona el quicksort hay tener claros estos conceptos:

Pivote: Es un numero del arreglo que tomaremos como referencia para reorganizar el arreglo de numeros y ordenarlo. En pocas palabras tomamos todos los numeros mayores que el que hayamos elegido como pivote y los colocamos a la derecha del mismo, y todos los que sean menores que este los colocamos del lado izquierdo.

Punteros izquierdo y derecho: El quicksort utiliza 2 punteros como referencia, uno izquierdo y uno derecho, normalmente cuando se ordena de menor a mayor el izquierdo simboliza el lado de números menores y el derecho los números mayores. A medida que analizamos el arreglo, los punteros se acercan el uno a otro y cuando se encuentran en una ubicación se coloca en esta el pivote y se separa el arreglo en 2 arreglos mas pequeños. Posteriormente se vuelve a aplicar el algoritmo a los arreglos mas pequeños hasta que se logre ordenar la secuencia tal y como se ha visto en el vídeo anterior.

Descarga:

Ordenador.java

Instrucciones:
La clase Ordenador posee un método que se llama quicksort, lo que hace es organizar un arregla unidimensional de menor a mayor utilizando
el algoritmo de quicksort. Para ponerlo a prueba puedes utilizar este codigo en tu metodo Main, mandando a llamar el metodo quicksort de la clase y organizando un arreglo cualquiera.

 

int array[] ={3,7,3,4,12,6,3,7,4};

Ordenador a = new Ordenador();

a.quicksort(array);

El programa esta diseñado para manejar datos de tipo int, por lo que solo acepta arreglos de numeros tipo entero.

Espero que te sirva, no olvides dejar tus comentarios.

 

 

 

Acerca del autor:

Mi nombre es Jorge Villalobos, soy Colombiano de nacimiento y resido en México desde 2005,actualmente soy el creador de codigoprogramacion.com Soy ingeniero en tecnologías de información y comunicaciones y trabajo de tiempo completo desarrollando aplicaciones web. En general me considero un tipo normal, me gusta salir, divertirme, y uno de mis hobbies es programar y hacer tutoriales para compartir conocimiento, me gusta la pizza, el ajedrez y tomar una que otra cerveza los fines de semana. Espero que este proyecto ayude a ayudar a los demás.

Twitter del autor:

12 comments

  1. Alexis Ortiz says:

    /**
    * Creo que algunas cosas están de más en el código
    */
    public void quicksort(int [] array)
    {
    quicksort(array, 0, array.length-1);
    }

    public void quicksort(int [] vect, int izq, int der)
    {
    int i, d, pivote, aux;
    //caso base
    if (izq >= der)
    return;

    i = izq; d = der;

    // if (izq != der)
    // {
    pivote = izq;
    //trabajo
    while (izq != der)
    {//imprimirArreglo(vect//);
    while (vect[der] >= vect[pivote] && izq < der)
    der–;
    // while (vect[izq] < vect[pivote] && izq < der)
    // izq++;
    if (der != izq)
    {
    aux = vect[der];
    vect[der] = vect[izq];
    vect[izq] = aux;
    }
    }
    if (izq == der)
    {
    //llamadas recursivas
    //quicksort(vect,i,izq-1);
    quicksort(vect,izq+1,d);
    }
    // } else {
    // return vect;
    // }
    }

  2. Damián says:

    Hola Jorge, el link de descarga está caído, ¿podrías resubirlo por favor?

  3. Wilmer Mantilla says:

    Muchas gracias,me ayudo mucho muy buena explicacion

  4. edgar says:

    oye el codigo no se puede descargar que onda m lo puedes enviar porfa

  5. daniel andres says:

    pana necesito el código el enlace de descarga esta caído por favor podrías enviármelo al mail o renovar el enlace??.

  6. noemi says:

    La web de descarga da error…una pena ya que el que yo tengo no se cómo invocarlo, deberia de ser facil porque lo tengo como metodo estatic…pero no se meimprime nada por pantalla como en el ejemplo de ti vide y no es solo el código lo que hace falta sino saber si necesita algun bucle mas para que repase varias veces el array hasta que salga ordenado…Un saludo

  7. Maycolxhito says:

    oye amigo rodrigo nesesito una ayuda en programar un software para resolver estadistica si podes responderme a mi twiter seria chido gracias

  8. rodrigo says:

    amigo como puedo implementar este metodo de ordenamiento en el mismo lenguaje a una base de datos sql y que por ejemplo ordene por nombre de a hasta la z

  9. rodrigo says:

    compadre como se implementaria este metodo de ordenamiento en el mismo lenguaje a una base de datos sql

  10. Nivex says:

    amigo el link no sirve amigo podrias enviarmelo por correo o montr el link nuevo por favor gracias amigo

  11. pedro says:

    hey loco el enlace de descarga no funciona si puedes hacer el favor de montarlo de nuevo o mandármelo por correo se lo agradecería

  12. Mike says:

    grxs me sirvio mucho

Leave a Reply to noemi Cancel reply

Your email address will not be published. Required fields are marked *