关于多层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. zookeeper集群的部署

    因为这里zookeeper的集群部署都会2n+1台 Dubbo建议使用Zookeeper作为服务的注册中心. Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的.正是基 ...

  2. angular.js 中的作用域 数据模型 控制器

    1.angular.js 作为后起之秀的前端mvc框架,他于传统的前端框架都不同,我们再也不需要在html中嵌入脚本来操作对象了.它抽象出了数据模型,控制器及视图. 成功解耦了应用逻辑,数据模型,视图 ...

  3. JDK1.5新特性,基础类库篇,调用外部命令类(ProcessBuilder)用法

    一. 背景 ProcessBuilder类是用来创建操作系统进程的.与Runtime.exec相比,它提供了更加方便的方法以创建子进程. 每个ProcessBuilder实例管理着一个进程属性的集合. ...

  4. 《Effective Java》读书笔记三(类和接口)

    No13 使类和成员的可访问性最小化 要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.模块之间只通过它们的API进行通信,一个 ...

  5. apache2部署django的错误

    apache的日志例如以下报错: /var/www/my_project/myproject/wsgi.py cannot be loaded as Python module ImportError ...

  6. tomcat 源码分析

    Tomcat源码分析——Session管理分析(下)    Tomcat源码分析——Session管理分析(上)     Tomcat源码分析——请求原理分析(下)     Tomcat源码分析——请 ...

  7. application , application pool., W3wp ,httpapplication, domain

    Hosting and Consuming WCF Services https://msdn.microsoft.com/en-us/library/bb332338.aspx http://www ...

  8. java.net.SocketException: Software caused connection abort: socket write erro

    场景:接口测试 编辑器:eclipse 版本:Version: 2018-09 (4.9.0) testng版本:TestNG version 6.14.0 执行testng.xml时报错信息: 出现 ...

  9. javascript基础学习--HTML DOM

    写在前面的话:由于学校没有开过javascript这门课,所以平时用javascript时都是用到什么就去搜什么样的代码,但是在工作中有时候搜来的代码总是有那么点小问题,而当自己想去修改时,却又无从下 ...

  10. 更改datatables的分页切换时的'processing'提示信息的式样

    jquery.dataTables.css .dataTables_wrapper .dataTables_processing { position: absolute; top: 50%; lef ...