Lo que te refieres es el Algoritmo de selección, como se indicó anteriormente. Específicamente, su referencia a quicksort sugiere que está pensando en el partition based selection.
Así es como funciona:
- Al igual que en la ordenación rápida, se empieza por elegir un buen pivote: algo que usted piensa que es casi a mitad de camino a través de su lista. A continuación, pasar por toda la lista de elementos swapping cosas atrás y adelante hasta todos los artículos de menos de su pivote está en el principio de la lista, y todas las cosas mayores que el pivote está al final. Tu pivote entra en el lugar sobrante en el medio.
- Normalmente en una clasificación rápida que habría Recurse en ambos lados del pivote, pero para el algoritmo de selección podrás única Recurse en el lado que contiene el índice le interesa. Por lo tanto, si usted quiere para encontrar el 3er valor más bajo, recurse en cualquier lado contiene el índice 2 (porque el índice 0 es el primer valor más bajo).
- Puede detener la recursión cuando ha reducido la región al solo índice . Al final, tendrá una lista desordenada de los objetos más pequeños "m-1" , y otra lista desordenada de los objetos más grandes "n-m" . El objeto "m" ésto estará entremedio.
Este algoritmo también es útil para encontrar una lista ordenada de los elementos m más altos ... simplemente seleccione el elemento m más grande, y ordene la lista de arriba. O bien, para un algoritmo que sea un poco más rápido, realice el algoritmo Quicksort, pero decida no recurrir en regiones que no se solapen con la región para la que desea encontrar los valores ordenados.
Lo mejor de esto es que normalmente se ejecuta en el tiempo O (n). La primera vez, ve la lista completa. En la primera recursión, ve aproximadamente la mitad, luego un cuarto, etc. Por lo tanto, mira alrededor de 2n elementos, por lo tanto, se ejecuta en O (n) tiempo. Desafortunadamente, como en el servicio rápido, si elige constantemente un pivote incorrecto, se ejecutará en O (n) vez.
Sonidos como este algoritmo es en general el tiempo O (nm), siendo n la longitud de la lista, m como en el m-ésimo elemento más pequeño. – Noldorin
Esto es solo un tipo de inserción. – newacct
Sí, esto solo está ordenando usando la pila – Learner