Quicksort

Quicksort en acción sobre una lista de números aleatorios. Las líneas horizontales son valores pivote.

El ordenamiento rápido (quicksort en inglés) es un algoritmo creado por el científico británico en computación C. A. R. Hoare.

Descripción del algoritmo

El algoritmo trabaja de la siguiente forma:

  • Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.
  • Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada.
  • La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha.
  • Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.

Como se puede suponer, la eficiencia del algoritmo depende de la posición en la que termine el pivote elegido.

  • En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n).
  • En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso dependerá de la implementación del algoritmo, aunque habitualmente ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del array, y el array que le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente.
  • En el caso promedio, el orden es O(n·log n).

No es extraño, pues, que la mayoría de optimizaciones que se aplican al algoritmo se centren en la elección del pivote.

Other Languages
العربية: ترتيب سريع
български: Бързо сортиране
বাংলা: কুইক সর্ট
català: Quicksort
čeština: Quicksort
Deutsch: Quicksort
English: Quicksort
Esperanto: Rapida ordigo
français: Tri rapide
עברית: מיון מהיר
Bahasa Indonesia: Quicksort
íslenska: Snarröðun
italiano: Quicksort
қазақша: Тез сұрыптау
한국어: 퀵 정렬
Nederlands: Quicksort
português: Quicksort
română: Quicksort
srpskohrvatski / српскохрватски: Quicksort
slovenčina: Quick sort
slovenščina: Hitro urejanje
српски / srpski: Квиксорт
svenska: Quicksort
українська: Швидке сортування
oʻzbekcha/ўзбекча: Quicksort
Tiếng Việt: Sắp xếp nhanh
中文: 快速排序