Ordenamiento rápido (Quick sort) en Ruby

Ordenamiento rápido o *Quick sort* es otro algoritmo clásico de ordenamiento.

![Animación del algoritmo quick sort – wikipedia](https://upload.wikimedia.org/wikipedia/commons/6/6a/Sorting_quicksort_anim.gif “Aquí se puede ver el uso del pivote para dividir la lista de elementos y ordenarlos”)

En este algoritmo se usa un *pivote* que sirve para separar el arreglo, con el fin de dividir el ordenamiento en partes más pequeñas. La elección del *pivote* se puede realizar de varias maneras, pero en este caso elegí la más sencilla que es el elemento que esta en medio del arreglo.

Como pueden ver, el manejo de arreglos que hace Ruby esta para dar miedo, luego viene la *recursividad* que es básicamente cuando el método se llama nuevamente a sí mismo.

Como pueden ver hay varias curiosidades en este ejemplo.

* **self** es un objeto muy interesante, porque en ruby, durante cada instrucción, solo se puede manejar un objeto a la vez y [self](http://rubytutorial.wikidot.com/self) es ese objeto. Durante la *recursividad* se van a manejar una gran cantidad de subarreglos más pequeños, de esta manera logramos hacerlo sin declarar otra variable.
* El método [find_all](http://ruby-doc.org/core-2.0/Enumerable.html#method-i-find_all) que devuelve otro arreglo que cumpla con la condición, en este caso valores más grandes o pequeños que el *pivote*.

Como pueden ver Ruby es un lenguaje con un alto nivel de optimización, entre más lo conozco, más quiero seguir aprendiendo.

### Referencias.
* [Quick sort – wikipedia](https://es.wikipedia.org/wiki/Quicksort)

5 thoughts on “Ordenamiento rápido (Quick sort) en Ruby

¡Me encantaría saber que opinas!

%d bloggers like this: