Para tales casos, la complejidad temporal del ciclo es O(log(log(n))). Los siguientes casos analizan diferentes aspectos del problema.
Caso 1 :
for (int i = 2; i <=n; i = pow(i, k)) { // some O(1) expressions or statements }
En este caso, i toma los valores 2, 2 k , (2 k ) k = 2 k 2 , (2 k 2 ) k = 2 k 3 , …, 2 k log k (log(n)) . El último término debe ser menor o igual que n, y tenemos 2 k log k (log(n)) = 2 log(n) = n, lo que concuerda completamente con el valor de nuestro último término. Así que hay en total log k (log(n)) muchas iteraciones, y cada iteración requiere una cantidad de tiempo constante para ejecutarse, por lo tanto, la complejidad total del tiempo es O(log(log(n))).
Caso 2:
// func() is any constant root function for (int i = n; i > 1; i = func(i)) { // some O(1) expressions or statements }
En este caso, i toma los valores n, n 1/k , (n 1/k ) 1/k = n 1/k 2 , n 1/k 3 , …, n 1/k log k (log(n)) , por lo que hay en total log k (log(n)) iteraciones y cada iteración lleva un tiempo O(1), por lo que la complejidad del tiempo total es O(log(log(n))).
Consulte el artículo a continuación para el análisis de diferentes tipos de bucles.
https://www.geeksforgeeks.org/analysis-of-algorithms-set-4-analysis-of-loops/
Este artículo es una contribución de Rishav Raj . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA