鉴于a
远大于b
,
for (i = 0; i < a; i++)
for (k = 0 k < b; k++)
快于
for (i = 0; i < b; i++)
for (k = 0 k < a; k++)
我觉得前者会更快,但我似乎无法理解这一点。
答案 0 :(得分:2)
那真的取决于你做了什么。在不知道正在做什么的情况下很难进行运行时分析。话虽如此,如果您使用此代码遍历大型数组,则更重要的是遍历每一行中的每一列而不是反之亦然。
[0] [1] [2]
[3] [4] [5]
[6] [7] [8]
在内存中确实是[0] [1] [2] [3] [4] [5] [6] [7] [8]。
当内存访问靠近时,您的计算机缓存提供了更大的优势,并且通过内存顺序进行而不是跳过行提供了更多的位置。