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?

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].