程序如下:
int a = 0;
int b[100][5];
for(int i = 0;i<100;i++)
{
for(int j=0;j<5;j++)
b[i][j] = i*j;
}//循环1
for(i=0;i<100;i++)
{
for(int j=0;j<5;j++)
a = a+b[i][j];
}//循环2
for(int j=0;j<5;j++)
{
for(i=0;i<100;i++)
a = a+b[i][j];
}两个循环的效率相同吗?如果不同,那么谁的效率高?为什么是不同的?
谢谢大家。
int a = 0;
int b[100][5];
for(int i = 0;i<100;i++)
{
for(int j=0;j<5;j++)
b[i][j] = i*j;
}//循环1
for(i=0;i<100;i++)
{
for(int j=0;j<5;j++)
a = a+b[i][j];
}//循环2
for(int j=0;j<5;j++)
{
for(i=0;i<100;i++)
a = a+b[i][j];
}两个循环的效率相同吗?如果不同,那么谁的效率高?为什么是不同的?
谢谢大家。
创建了一个局部变量j
循环1中,
a = a+b[i][j]; 执行了500次;
对j<5的判断执行了500次;
对i<100的判断执行了100次。
循环2中,
a = a+b[i][j]; 执行了500次;
对i<100的判断执行了500次;
对j<5的判断执行了5次。
现在明白了吗?所以最忙的循环要放在最内层。