关于多层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. 工作中常用的mysql操作

    一.在一个数据库中定义的存储过程或者是函数在另一数据库的存储过程中引用 1.我首先在数据库player_db中构建了一个函数:p_exp_to_level BEGIN ; ; RETURN v_lev ...

  2. Android --------------------ActionBar 与 ViewPager 和 ActionTab 切换 的源代码实现

    參考网址: 点击打开链接 源代码实现: package com.example.actionbardemo2; import android.app.ActionBar; import android ...

  3. [na]ppp协议链路认证-chap认证流程

    Point-to-Point Protocol (PPP)协议是广域网链路的一种协议,不同于局域网的ethernetII协议 PPP协商过程,分三步:LCP.认证.NCP. 一 协议概述 PPP包含以 ...

  4. THINKPHP导入全部post参数

    @extract($_POST);//导入全部POST参数直接使用变量

  5. 2014年百度之星资格赛第四题Labyrinth

    Problem Description 度度熊是一仅仅喜欢探险的熊.一次偶然落进了一个m*n矩阵的迷宫.该迷宫仅仅能从矩阵左上角第一个方格開始走.仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...

  6. nyoj228 士兵杀敌(5)插线问线

    士兵杀敌(五) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候,总会有一批编号连在一起人请战 ...

  7. pre 强制换行

    当前位置:懒人建站 > javascript > 网页特效 > css强制pre标签换行 css强制pre标签换行,pre标签的功能就是保留文本源格式,将会保留文本的长度,空格 空行 ...

  8. shell关于日期的加减

    $cat sh.sh #!/bin/bash ] ; then ydate=`date -d -1days "+%Y%m%d"` ydateother=`date -d -1day ...

  9. 浅谈C# application.DoEvent作用

    Application.DoEvents()的作用:处理所有的当前在消息队列中的Windows消息. private void button1_Click(object sender, EventAr ...

  10. dubbox2.8.4例子教程二

    简介 上篇博客写了个dubbox生产者,也用HttpClient代码测试了rest服务,下面记录dubbox消费者工程  一.工程结构    一.Simple.java package bhz.ent ...