¿Cuál de los siguientes dos segmentos de código es más rápido? Suponga que el compilador no realiza optimizaciones.
C++
/* FIRST */ for(i = 0; i < 10; i++) for(j = 0; j < 100; j++) //do something // This code is contributed by Shubham Singh
C
/* FIRST */ for(i=0;i<10;i++) for(j=0;j<100;j++) //do something
Java
/* First */ for(i = 0; i < 10; i++) for(j = 0; j < 100; j++) //do something // This code is contributed by sarajadhav12052009
Python3
# FIRST for i in range(10): for j in range(100): #do something # This code is contributed by shivani
C++
/* SECOND */ for(i=0;i<100;i++) for(j=0;j<10;j++) //do something //This code is contributed by Shubham Singh
C
/* SECOND */ for(i=0;i<100;i++) for(j=0;j<10;j++) //do something
Java
/* Second */ for(i = 0; i < 100; i++) for(j = 0; j < 10; j++) //do something // This code is contributed by sarajadhav12052009
Python3
# SECOND for i in range(100): for j in range(10): # Do something # This code is contributed by shivani
Ambos segmentos de código proporcionan la misma funcionalidad, y el código dentro de los dos bucles for se ejecutaría la misma cantidad de veces en ambos segmentos de código.
Si miramos más de cerca, podemos ver que el SEGUNDO hace más operaciones que el PRIMERO. Ejecuta las tres partes (asignación, comparación e incremento) del bucle for más veces que las partes correspondientes de FIRST:
- El SEGUNDO ejecuta operaciones de asignación (j = 0 o i = 0) 101 veces mientras que el PRIMERO ejecuta solo 11 veces.
- El SEGUNDO hace 101 + 1100 comparaciones (i < 100 o j < 10) mientras que el PRIMERO hace 11 + 1010 comparaciones (i < 10 o j < 100).
- El SEGUNDO ejecuta operaciones con incrementos de 1100 (i++ o j++) mientras que el PRIMERO ejecuta operaciones con incrementos de 1010.
El siguiente código cuenta el número de operaciones de incremento ejecutadas en PRIMERO y SEGUNDO, e imprime los conteos.
C++
// C++ program to count number of increment // operations in FIRST and SECOND #include<iostream> using namespace std; int main() { int c1 = 0, c2 = 0; /* FIRST */ for(int i=0;i<10;i++,c1++) for(int j=0;j<100;j++, c1++); /* SECOND */ for(int i=0; i<100; i++, c2++) for(int j=0; j<10; j++, c2++); cout << " Count in FIRST = " <<c1 << endl; cout << " Count in SECOND = " <<c2 << endl; getchar(); return 0; }
Java
// Java program to count number of increment // operations in FIRST and SECOND import java.io.*; class GFG { public static void main (String[] args) { int c1 = 0, c2 = 0; for(int i=0; i<10;i++, c1++){ for(int j=0;j<100;j++, c1++){} } for(int i=0;i<100;i++, c2++){ for(int j=0;j<10;j++, c2++){} } System.out.println( "Count in First = "+c1); System.out.println( "Count in SECOND = "+c2); } }
Python3
# Python program to count number of increment # operations in FIRST and SECOND c1 = 0 c2 = 0 # FIRST for i in range (10): for j in range (100): c1 += 1 c1 += 1 # SECOND for i in range (100): for j in range (10): c2 += 1 c2 += 1 print("Count in FIRST = " ,c1) print("Count in SECOND = " ,c2) # This code is contributed by shivanisinghss2110
C#
// C# program to count number of increment // operations in FIRST and SECOND using System; class GFG{ public static void Main (String[] args) { int c1 = 0, c2 = 0; for(int i = 0; i < 10; i++, c1++) { for(int j = 0; j < 100;j++, c1++){} } for(int i = 0; i < 100; i++, c2++) { for(int j = 0; j < 10; j++, c2++){} } Console.WriteLine("Count in First = " + c1); Console.WriteLine("Count in SECOND = " + c2); } } // This code is contributed by shivanisinghss2110
Javascript
<script> // JavaScript program to count number of increment // operations in FIRST and SECOND let c1 = 0, c2 = 0; for(let i=0; i<10;i++, c1++){ for(let j=0;j<100;j++, c1++){} } for(let i=0;i<100;i++, c2++){ for(let j=0;j<10;j++, c2++){} } document.write( "Count in First = "+c1 +"<br>"); document.write( "Count in SECOND = "+c2); // this code is contributed by shivanisinghss2110 </script>
Count in FIRST = 1010 Count in SECOND = 1100
El siguiente código cuenta el número de operaciones de comparación ejecutadas por PRIMERO y SEGUNDO
C++
//program to count the number of comparison //operations executed by FIRST and SECOND */ #include<iostream> using namespace std; int main() { int c1 = 0, c2 = 0; /* FIRST */ for(int i=0; ++c1&&i<10; i++) for(int j=0; ++c1&&j<100;j++); /* SECOND */ for(int i=0; ++c2&&i<100; i++) for(int j=0; ++c2&&j<10; j++); cout << " Count for FIRST " <<c1 << endl; cout << " Count for SECOND " <<c2 << endl; getchar(); return 0; }
Java
/*package whatever //do not write package name here */ import java.io.*; class GFG { public static void main (String[] args) { int c1 = 0, c2 = 0; for(int i=0; i<++c1 && i<10;i++) { for(int j=0;j<++c1 &&j<100;j++) { } } for(int i=0;i<++c2 && i<100;i++) { for(int j=0;j<++c2 &&j<10;j++) { } } System.out.println( "Count in FIRST = "+c1); System.out.println( "Count in SECOND = "+c2); } }
Python3
#program to count the number of comparison #operations executed by FIRST and SECOND */ # FIRST c1 = 1 c2 = 1 i = 0 while (i < c1 and i < 10): j = -1 c1 += 1 while (j < c1 and j < 100): c1 += 1 j += 1 i += 1 # SECOND i = 0 while (i < c2 and i < 100): j = -1 c2 += 1 while (j < c2 and j < 10): c2 += 1 j += 1 i += 1 print(" Count fot FIRST " , c1) print(" Count fot SECOND " , c2) # This code is contributed by shivanisinghss2110
C#
/*package whatever //do not write package name here */ using System; class GFG { public static void Main (String[] args) { int c1 = 0, c2 = 0; for(int i = 0; i < ++c1 && i < 10; i++) { for(int j = 0; j < ++c1 && j < 100; j++) { } } for(int i = 0; i < ++c2 && i < 100; i++) { for(int j = 0; j < ++c2 && j < 10; j++) { } } Console.WriteLine( "Count in FIRST = "+c1); Console.WriteLine( "Count in SECOND = "+c2); } } // This code is contributed by shivanisinghss2110
Javascript
<script> /*package whatever //do not write package name here */ //program to count the number of comparison //operations executed by FIRST and SECOND */ let c1 = 0, c2 = 0; for(let i=0; i<++c1 && i<10;i++) { for(let j=0;j<++c1 &&j<100;j++) { } } for(let i=0;i<++c2 && i<100;i++) { for(let j=0;j<++c2 &&j<10;j++) { } } document.write( "Count in FIRST = "+c1 +"<br>"); document.write( "Count in SECOND = "+c2); // this code is contributed by shivanisinghss2110 </script>
Count for FIRST 1021 Count for SECOND 1201
Gracias a Dheeraj por sugerir la solución.
Escriba comentarios si encuentra que alguna de las respuestas/códigos es incorrecta, o si desea compartir más información sobre los temas discutidos 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