¿Estos bucles while tienen la misma o diferente complejidad de tiempo (ver detalles)?

Intentando una respuesta a mi propia pregunta:

Creo que, aunque es lógicamente equivalente , los 2 fragmentos de código tienen diferentes complejidades de tiempo.

La razón es que cualquier ciclo while (condición) (digamos, de 10 líneas de código) puede reescribirse de la siguiente manera:

PASO 10: si (condición) VAYA AL PASO 11 más VAYA AL PASO 20

PASO 11: // haz algo

PASO 12: // haz algo

..

..

PASO 19: VAYA AL PASO 10;

PASO 20: // Ejecución adicional


Ahora, en los ejemplos dados, el primer fragmento de código es equivalente a:

PASO 10: si (verdadero) VAYA AL PASO 11 OTROS VAYA AL PASO 14

PASO 11: si (condición) VAYA AL PASO 12 OTRO retorno

PASO 12: // haz algo

PASO 13: VAYA AL PASO 10

PASO 14: // fuera del bucle, haz otra cosa

El segundo fragmento de código es equivalente a:

PASO 10: si (condición) VAYA AL PASO 11 OTROS VAYA AL PASO 13

PASO 11: // haz algo

PASO 12: VAYA AL PASO 10

PASO 13: regreso

Como se puede ver, el primer fragmento de código tiene dos condiciones if para tratar, mientras que el segundo fragmento solo tiene una condición if. Es por eso que el primer fragmento de código tiene una mayor complejidad temporal que el segundo.

Si, no hay diferencia. while (condition), for (, condition,) etc. son los accesos directos que le proporciona el idioma para que no tenga que escribir siempre condiciones como la primera versión todo el tiempo, pero solo significa que el compilador agregará una condición como ese. Esas son dos formas de expresar lo mismo, el segundo es más claro para cualquiera que lea su código y, por lo tanto, es aconsejable, pero si tiene razones para usar el primero, por ejemplo, tiene varias condiciones verificadas en diferentes puntos del bucle, entonces puede usar la primera (una versión más clara de leer, ya que hacer algo puede tener muchas líneas) sería escribir

si (! condición)
regreso; // o descanso;
//hacer algo

) y el resultado final será el mismo.

More Interesting

Estoy en el 12 ° grado. Quiero hacer una investigación sobre computación cuántica. ¿Qué cursos debo tomar?

¿Cuál es el significado físico de la trama de 2 convoluciones?

¿Cómo prueban los científicos que las computadoras cuánticas 'deberían' tener una aceleración computacional en lugar de una desaceleración computacional sobre las computadoras clásicas?

¿Cuáles son algunas aplicaciones comunes de la teoría de nudos en la computación cuántica?

¿Cuántos flops haría una computadora cuántica que procesa 50 qubits por segundo?

¿Qué hace que la computación cuántica sea rápida? ¿Es simplemente la capacidad de ser 1 y 0 simultáneamente, o está relacionado con la velocidad física de las partículas en movimiento?

¿Cuánto tiempo pasará antes de que la primera computadora cuántica se produzca para uso comercial?

¿Cuál es la relación entre qubit y matriz de densidad?

En la computación cuántica, cuando finaliza una computación, la superposición colapsa, lo que proporciona un solo resultado (los qubits se convierten en simples bits clásicos). ¿Tiene su propia superposición nueva?

¿Cuáles son los temas más recientes en el campo de investigación de la óptica cuántica?

¿Se podría usar la decoherencia cuántica para probar si una IA es realmente consciente?

¿Es teóricamente posible simular moléculas de aire individuales y resolver el problema de turbulencia dada una semilla y una computadora cuántica competente?

¿Cuándo espera que se construya la primera computadora cuántica real? ¿Qué año?

Teóricamente, ¿cómo podrían las computadoras cuánticas ayudar a los neurocientíficos a comprender el cerebro humano?

¿Qué son las constantes en QBasic?