sum = 0;
for (i = 0; i < m; i++)
for (j = 0; j < m*m; j++)
sum++;
曾经尝试用Big-O表示法来计算该算法的时间复杂度。
我只发现1-第一循环计数为O(m),而2-第二循环计数为O(m ^ 2)。但是我有一个问题。这个嵌套循环是否算作O(m ^ 3)还是我必须以增长最快的函数为基础并说这个循环算作O(m ^ 2)?
答案 0 :(得分:2)
您必须计算sum++
的有效执行次数,而不必推测功能的增长。
每次调用内循环时,它都会精确执行m²次sum++
。
内循环被外循环精确地执行了m次,因此总共执行了m³sum++
。
不用说,O(m³)。
答案 1 :(得分:1)
在大学里对我有帮助的就是一个例子-例如2。
for(int i = 0; i<2; i++)
for(int j = 0; j<4; j++)
因此循环运行8次,即2 * 4
次,即8
,即2*2*2
或2³
。