El número exacto de llamadas al generador de números aleatorios (RNG) dependerá de los detalles de su implementación rápida. Por ahora, supondré que la implementación es ingenua: se elige un número aleatorio en cada llamada al ordenamiento rápido siempre que haya al menos dos elementos en la lista actual que se ordenarán. También supondré que todos los elementos son distintos (de lo contrario, el mejor de los casos requeriría cero llamadas al RNG). En el peor de los casos, si cada pivote cae constantemente en cualquiera de los dos extremos, se realizarán llamadas [math] n-1 [/ math] al RNG. En el mejor de los casos, el pivote divide constantemente la matriz en dos partes iguales. Por lo tanto, si una matriz de tamaño 2 toma una llamada para ordenar, una matriz de tamaño 5 tomaría tres llamadas para ordenar, ya que elegir un pivote se ocupa de un elemento. Continuando con el patrón, una matriz de tamaño 11 tomaría 7 llamadas, 23 tomaría 15 llamadas, etc. La fórmula exacta sería que una matriz de tamaño [math] 3 \ cdot2 ^ k-1 [/ math] requiere [math] 2 \ cdot2 ^ k-1 [/ math] llamadas. Asintóticamente, el número de llamadas se aproxima a [matemáticas] 2n / 3 [/ matemáticas].
Cuando se ejecuta el ordenamiento rápido aleatorio, ¿cuántas llamadas se realizan al generador de números aleatorios en el peor de los casos? ¿Y también para el mejor caso?
Related Content
Cómo usar el código VHDL para generar el seno de un ángulo dado usando el algoritmo CORDIC
¿Alguien puede explicar la solución a SPOJ.com - Problema M3TILE?
More Interesting
¿Necesito aprender algún lenguaje de programación antes de intentar estructuras de datos?
¿Qué es mejor para la búsqueda binaria, la matriz ordenada o la lista vinculada?
¿Qué es el retroceso en un diseño de algoritmo?
¿Cuál es la diferencia entre matriz y estructura en la programación?
¿Por qué no se acepta mi solución para SPOJ.com - JUEGOS de problemas?
¿Cuál es la diferencia entre una 'Tee de expansión mínima' y 'caminos más cortos'?
Cómo escribir algoritmos de programación eficientes
¿Cuáles son algunos ejemplos de software del mundo real de pilas, colas y deques?
¿Cuál es el algoritmo de programación del juego para una temporada regular de la NBA?
¿Cuál es uno de tus problemas favoritos que has encontrado en mecánica / dinámica clásica?