¿Cómo es la complejidad del tiempo O (n * sqrt (n))?

No es [math] O (n * \ sqrt {n}) [/ math], es solo O (N). Aquí está la prueba.

La complejidad del tiempo es equivalente al número de operaciones realizadas. En este caso particular, contar el número de operaciones es razonablemente fácil.

Número de operaciones = Número de veces que la variable de count se actualizó = Número total de iteraciones.

El bucle interno se ejecuta I veces para cada bucle externo. El bucle externo cambia I de N a 0, reduciendo a la mitad en cada paso. Así, el número total de veces que se actualizó la variable de conteo fue:
[matemáticas] S = N + \ dfrac {N} {2} + \ dfrac {N} {4} + .. + 1 [/ matemáticas]

[matemáticas] S = N (1 + \ dfrac {1} {2} + \ dfrac {1} {4} + .. + \ dfrac {1} {2 ^ k}) [/ matemáticas]

Donde [matemáticas] k = log (N) [/ matemáticas]

[matemática] S = N * (2 – 2 ^ {- k}) = N * \ dfrac {2N-1} {N} [/ matemática]

[matemáticas] = O (N) [/ matemáticas]