Ordenamiento rápido o Quick sort es otro algoritmo clásico de ordenamiento.
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.
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 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 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.
A mí me gustaría saber como con java programar para que se vea graficamente, asi como en el gif
¿Y que te detiene Juan?
Que tal se comporta con digamos, un millón de elementos? (aún asi son pocos), en que tiempo termina la ejecución?
Solo hay una forma de averiguarlo 🙂
Se tarda más en mostrar los datos que en ordenarlos 🙂
http://gw.gd/0wty
Ambos sabemos que hay varios algoritmos de ordenamiento, este por ejemplo, resulta mejor que el de burbuja.
En mi equipo tardó 2.11438054 segundos en terminar el ordenamiento.( http://gw.gd/Ve0v )