for语句嵌套循坏性能的剖析

日常工作中,处理数据难免会遇到遍历,for循环可能是我们用的比较多的了。本节就来探讨下for语句嵌套循环的性能,猜想下面两个语句的性能。

语句1

for ( i= 0;  i < 1000000;  i++){
      for (j =0; j < 100; j++)
          {
              expression;
          }}
    

语句2

for ( i= 0;  i < 100;  i++){
      for (j =0; j < 1000000; j++)
          {
              expression;
          }}
    

乍一看,感觉两个嵌套循环执行的次数都是一样的,那么他们的时间复杂度是一样的吗?让我们来分析下,语句1外层循环执行了1000000次,内层循环执行了1000000*100次,而语句2外层循环执行了100次,内层循环也执行了1000000*100次。那么,既然内层执行的次数都一样,外层是不是执行的越少越好呢?让我们写代码认证下。

验证代码

        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            sw.Start();
            for (int i = 0; i < 1000000; i++)
            {
                for (int j = 0; j < 100; j++)
                {
                    // expression;
                }
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);

            sw.Reset();

            sw.Start();
            for (int i = 0; i < 100; i++)
            {
                for (int j = 0; j < 1000000; j++)
                {
                    // expression;
                }
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);
        }

验证截图

得出结论,对于for语句的嵌套循环,总循环次数相等,外层循环越小越好。个人拙见,工作中具体情况具体对待...

时间: 2024-10-12 09:24:31

for语句嵌套循坏性能的剖析的相关文章

jQuery$.each循环遍历详解,各种取值对比,$.each遍历数组、对象、Dom元素、二维数组、双层循坏、类json数据等等

jQuery 遍历函数包括了用于筛选.查找和串联元素的方法. 函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集合中. .children() 获得匹配元素集合中每个元素的所有子元素. .closest() 从元素本身开始,逐级向上级元素匹配,并返回最先匹配的祖先元素. .contents() 获得匹配元素集合中每个元素的子元素,包括文本和注释节点. .each() 对 jQuery 对象进行迭代,为每个匹配元素执行函数. .end(

java(5)循坏结构

一. while循环 1.循环的优点? 减少重复代码的编写:程序会更加的简洁 2.语法 while(表达式){ // 1.表达式是[循环条件],结果必须是boolean类型 //2.{}中的代码,即[循环操作(体)] //3.[迭代部分]更改循环条件,结束循环 } 3.特点:先判断,再执行 4.while循环有2种常见的方式 方式1: while(1.循环条件: 判断字符串是否相等){ //2.循环操作 //3.再次接收键盘中的字符串,更改循环条件,来结束循环 } 示例1:为了帮助张三尽快提高成

分支语句嵌套练习

练习 1.男士体重 = 身高 - 100 (+-3) 女士体重 = 身高 - 110 (+-3)请输入性别:请输入体重(kg):请输入身高(cm): 您的体重非常标准/您需要减肥了/您需要补充营养 您距离标准体重还差xxx公斤 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 分支语句嵌套练习1 { class Program { static void

JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结

JAVA之旅(二)--if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结 JAVA的思想真的很重要,所以要专心的学--献给刚入门的小程序员们 一.语句 一般语句也就三个类型 判断语句 if 选择语句 switch 循环语句 for 当然,还有其他的 我们这里一个一个来讲 1.if if,如果,就是判断,if(条件){} //公共的 类 类名 public class HelloJJAVA { // 公共的 静态 无

使用两个嵌套的for循坏探测2-100的所有素数

只能被1和本身整除的整数才叫做素数 public class prime { public static void main(String[] args) { for (int i = 2; i <= 100; i++) { int factors = 0;//定义一个变量,等会计数用. for (int j = 1; j<=i; j++) { if ((i % j) == 0) factors++;//能被整除的,进行计数,+1: } if (factors <= 2)//这里fact

java 增强for循坏遍历set 集合嵌套

package com.lideng.work322; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class MapDome1 { /** * 利用增强for循环遍历集合 * @param args */ public sta

Python语法基础03(if语句,while循环与for循环)

if语句:语法:单分支if 判断条件:语句块 执行过程:首先执行判断条件,当条件成立则执行判断条件下面的语句块,若条件不成立,则不执行 双分支if 判断条件:语句块1else:语句块2执行过程: 首先执行判断条件,若条件成立则执行语句块1,若条件不成立,则执行语句2. 多分支if 判断条件1:语句块1elif 判断条件2:语句块2elif 判断条件n:语句块nelse:语句块执行过程:首先执行判断条件1,若成立则执行语句块1,若不成立,则执行判断语句2,若条件成立,则执行语句块2,若不成立,依次

for语句与if语句嵌套的简单应用

1.循环语句 for(初始条件:循环条件:状态改变) { 循环体 } break为跳出循环,continue为结束此次循环. 2.死循环常用while语句 while(判断语句) { if(判断) { break } } 凑钱问题 用一元,两元,五元三种面值的钱凑20元有几种方法. <script> var count=0; for(var one=0;one<=20;one++) { for(var two=0;two<=10;two++) { for(var five=0;fi

SQL语句 - 嵌套查询

嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. 嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询利用内层查询的结果嵌套查询不仅仅可以用于父查询select语句使用.还可以用于insert.update.delete语句或其他子查询中. 一.子查询的组成 1.包含标准选择列表组件的标准select查询. 2.包含一个或多个表或者视图名称的