关于多层for循环迭代的效率优化问题

今天笔试的时候遇到这么一道题目  说有上面这么循环嵌套  。问怎么优化 并说明原因。   


 for(int i = 0 ; i < 1000 ;i++){

     for(int j = 0; i < 100; j++){

        for(int k = 0;k < 10; k++ ){

              fun(i,j,k);

        }

    }

}



咋一看,被这个题目蒙到了,可能是由于平时没怎么注意这些方面。因此上网找了些资料来学习一下。



对于这样的多层循环的遍历,我们的一个原则是内大外小。

内大外小  

  for( int k=0;k <10;k++){  

  for(int j=0;j <100;j++){  

  for(int i=0;i <1000;i++){  

  function(i,j,k);  

  }  

  }  

  }   

  k <10;k++; 运行10次  

  j <100;j++ 运行10*100次  

  i <1000;i++ 运行10*100*1000次  

  function(i,j,k); 运行10*100*1000次  

  共运行语句数=(10+10*100+10*100*1000)*2+10*100*1000=3002020 





  内小外大  

  for( int k=0;k <1000;k++){  

  for(int j=0;j <100;j++){  

  for(int i=0;i <10;i++){  

  function(i,j,k);  

  }  

  }  

  }   

  k <1000;k++; 运行1000次  

  j <100;j++ 运行1000*100次  

  i <10;i++ 运行10*100*1000次  

  function(i,j,k); 运行10*100*1000次  

  共运行语句数=(1000+1000*100+10*100*1000)*2+10*100*1000=3202000  



所以运行效率应该是内大外小更高一写  

  内小外大-内大外小=3202000条语句-3002020条语句=199980条语句 




关于多层for循环迭代的效率优化问题的更多相关文章

  1. 【java】Map、Set、List不同数据结构的各种不同循环迭代的效率对比,使用场景

    Map.Set.List不同数据结构的各种不同循环迭代的效率对比,使用场景 引申一个地址:Map迭代的使用keySet和entitySet的效率

  2. Map循环/迭代/遍历效率、性能问题。

    项目开发完毕,为了找点事打发一下时间,于是用findBugs插件对当前完工的项目进行扫描,发现了很多问题.其中有个关于性能的问题,在这里记录一下. 提示信息为:Inefficient use of k ...

  3. Alink漫谈(十五) :多层感知机 之 迭代优化

    Alink漫谈(十五) :多层感知机 之 迭代优化 目录 Alink漫谈(十五) :多层感知机 之 迭代优化 0x00 摘要 0x01 前文回顾 1.1 基本概念 1.2 误差反向传播算法 1.3 总 ...

  4. java关于for循环的效率优化

    我们知道在实现一个功能的时候是可以使用不同的代码来实现的,那么相应的不同实现方法的性能肯定也是有差别的,所以我们在写一些对性能很敏感的模块的时候,对代码进行优化是很必要的,所以我们说一下for循环(w ...

  5. php程序效率优化的一些策略小结

    php程序效率优化的一些策略小结   1.在可以用file_get_contents替代file.fopen.feof.fgets等系列方法的情况下,尽量用 file_get_contents,因为他 ...

  6. php性能效率优化

    [size=5][color=Red]php性能效率优化[/color][/size] 最近在公司一边自学一边写PHP程序,由于公司对程序的运行效率要求很高,而自己又是个新手,一开始就注意程序的效率很 ...

  7. php效率优化

    php效率优化 最近在公司一边自学一边写PHP程序,由于公司对程序的运行效率要求很高,而自己又是个新手,一开始就注意程序的效率很重要,这里就结合网上的一些资料,总结下php程序效率优化的一些策略:1. ...

  8. 浅谈自底向上的Shell脚本编程及效率优化

    作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...

  9. QRowTable表格控件(四)-效率优化之-优化数据源

    目录 一.开心一刻 二.问题分析 三.重写数据源 1.自己存储数据 2.重写data接口 四.比较 五.相关文章 原文链接:QRowTable表格控件(四)-效率优化之-优化数据源 一.开心一刻 一程 ...

随机推荐

  1. Response.ContentType 详细列表-请求的内容类型详细记录

    Response.ContentType 详细列表-请求的内容类型详细记录 作者:王春天一.应用实例: Response.Clear(); Response.ContentType = "t ...

  2. python中如果函数后面有多于一个括号是怎么回事?

    一般而言,调用一个函数是加一个括号.如果看见括号后还有一个括号,说明第一个函数返回了一个函数,如果后面还有括号,说明前面那个也返回了一个函数.以此类推. 比如fun()() def fun(): pr ...

  3. Centos编译Hadoop 2.x 源码

    1. 前言 Hadoop-2.4.0的源码目录下有个BUILDING.txt文件,它介绍了如何在Linux和Windows下编译源代码,本文基本是遵照BUILDING.txt指示来操作的,这里再做一下 ...

  4. SpringDaoSupport

    @Component public class SuperDAO extends HibernateDaoSupport { @Resource(name="sessionFactory&q ...

  5. vim:inoremap命令

    inoremap命令用于映射按键. i代表是在插入模式(insert)下有效 nore表示不递归no recursion,例如:inoremap Y y和inoremap y Y并不会出现无限循环. ...

  6. 同一个界面内取微信的OPENID和调用微信的分享接口

    步骤如下,1:判断URL是否有CODE参数传入,没有则拼接那个微信跳转连接,然后redirect2:有CODE传入,调用微信接口,根据code获取openid和access_token,注意这一步取到 ...

  7. 如何创建自己的ruby gem包

    编写一个最简单的例子 1. 建好如下文件夹 注意:lib目录下必须有个和你gem名字一样的rb文件. $ cd hola $ tree . ├── hola.gemspec └── lib └── h ...

  8. Untrusted 游戏 通关攻略

    这个游戏还不错,用了两个晚上的时间通过并写下解法.这个游戏通过修改JS代码来通关的游戏.很考验玩家的解决问题能力,同时也有一定的可玩性. 游戏地址 http://alexnisnevich.githu ...

  9. SQL SEREVR IO

    Designing High Performance I/O Systems for SQL Server https://sqlbits.com/Downloads/86/Designing%20I ...

  10. angular学习笔记(五)-阶乘计算实例(1)

    <!DOCTYPE html> <html ng-app> <head> <title>2.3.2计算阶乘实例1</title> <m ...