日常工作中,处理数据难免会遇到遍历,for循环可能是我们用的比较多的了。本节就来探讨下for语句嵌套循环的性能,猜想下面两个语句的性能。
class="T2">语句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语句的嵌套循环,总循环次数相等,外层循环越小越好。个人拙见,工作中具体情况具体对待...