for(int i=0;i <1000;i++) 
  { 
    for(int y=0;y <100;y++) 
    { 
        for(int z=0;z <10;z++) 
        { 
          function(i,y,z); 
        } 
    } 
  } 为什么把循环次数多放到最里层就能提高运行速率哦?

解决方案 »

  1.   


    (1)for(int i=0;i <1000;i++) 
      { 
        for(int y=0;y <100;y++) 
        { 
            for(int z=0;z <10;z++) 
            { 
              function(i,y,z); 
            } 
        } 
      } for(int i=0;i <1000;i++) 
      { 
        for(int y=0;y <100;y++) 
        { 
            for(int z=0;z <10;z++) 
            { 
              function(i,y,z); 
            } 
        } 
      } (2)首先可以肯定的是这两种方式(代码(1),(2))它们执行function(i,y,z)的次数相同。
    我们从赋值,比较,自加的次数上分析:设这三者之和为O(1)代码(1)
    1000 + 100000 + 1000000 = 1101000 个O(1)代码(2)
    10 + 1000 + 1000000     =1001010 个O(1)(1) - (2) = 99990 个
      

  2.   

    (2)for(int i=0;i <10;i++) 
      { 
        for(int y=0;y <100;y++) 
        { 
            for(int z=0;z <1000;z++) 
            { 
              function(i,y,z); 
            } 
        } 
      }