Los adjetivos comunes al frente de la oferta rápida son deterministas y aleatorios. Determinístico significa que el servicio rápido siempre clasificará el mismo conjunto de datos de la misma manera mientras que un servicio rápido aleatorio utiliza la aleatorización y rara vez ordenará los mismos datos de la misma manera (a menos que el conjunto de datos sea muy pequeño, entonces es más común) .
determinista
Todo se reduce a cómo se eligen los pivotes. En una oferta rápida determinista, los pivotes se eligen eligiendo siempre el pivote en el mismo índice relativo, como el primer elemento, el último o el medio, o utilizando la mediana de cualquier número de opciones predeterminadas de elementos. Por ejemplo, un método común es elegir la mediana de los elementos primero, último y medio como pivote. Incluso con el método de la mediana de 3 que acabo de describir, ciertos conjuntos de datos pueden dar fácilmente complejidad al tiempo O (N^2). Un ejemplo es el conjunto de datos los llamados tubos de órgano conjunto de datos:
array = [1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1]
aleatorios
quicksorts Randomizated pueden elegir sólo un pivote al azar o utilizar la mediana de algún número de pivotes elegido al azar. Todavía existe la posibilidad de O (N^2) complejidad de tiempo, pero la probabilidad es mucho, mucho más pequeña y se vuelve más pequeña con el aumento del tamaño del conjunto de datos.
¿Cuál es la diferencia entre las versiones deterministas y aleatorias de Quicksort? –
El sistema de decisión determinista elige el pivote determinísticamente (por ejemplo, siempre el primer elemento sin clasificar, o el elemento a la mitad). La colección rápida aleatorizada elige un elemento aleatorio sin clasificar como pivote. –
La elección del elemento de pivote. La colección rápida aleatorizada elige un índice aleatorio en la matriz para un pivote; determinista siempre elige un índice particular (es decir, l "eftmost"). –