QUICKSORT Algoritmo de Ordenación Recursivo En que se basa El algoritmo QuickSort se basa en la técnica de "divide y vencerás" por la que en cada recursión, el problema se divide en subproblemas de menor tamaño y se resuelven por separado (aplicando la misma técnica) para ser unidos de nuevo una vez resueltos. Características del Algoritmo QuickSort En la práctica, es el algoritmo de ordenación más rápido conocido, su tiempo de ejecución promedio es O(n log (n)), siendo en el peor de los casos O(n2), caso altamente improbable. El hecho de que sea más rápido que otros algoritmos de ordenación con tiempo promedio de O(n log (n)) ( como SmoothSort o HeapSort ) viene dado por que QuickSort realiza menos operaciones ya que el método utilizado es el de partición. Complejidad Algorítmica Quicksort Time Complexity Best O(n*log n) Worst O(n2) Average O(n*log n) Space Complexity O(log n) Stability No 1. Seleccionar el Pívot 2. Reordenar el arreglo ¿Cómo se hace el Reordenamiento? El pívot se compara con los elementos empezando desde el primer índice. Si el elemento comparado es mayor que el pívot, se agrega un segundo puntero a ese elemento. Se sigue comparando, si un elemento es menor al pívot, el elemento menor es intercambiado con el elemento mayor al cual se le seteo el segundo puntero. El proceso es repetido, con el siguiente mayor elemento al pívot encontrado para ser intercambiado por uno menor. Se continúa este proceso hasta que el penúltimo elemento es alcanzado. Finalmente, el pívot es intercambiado por el segundo puntero. ALGORITMO COMPLETO Se separan en dos sub-partes, izquierda y derecha, y son elegidos pívots para cada parte, y se repite el paso 2. Los sub-arreglos son divididos hasta que cada sub-arreglo es formado por un solo elemento, en este punto, el arreglo ya está ordenado. Código Código