以下代码段的时间复杂度是多少?你能解释一下吗?
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
//print something
}
}
答案 0 :(得分:4)
外部循环有n
次迭代。
对于外循环的每次迭代,内循环都有i+1
次迭代。
因此内循环的迭代总数为:
1 + 2 + 3 + ... + n
等于
n*(n+1)
-------
2
这是O(n^2)
答案 1 :(得分:3)
每当您面临计算时间复杂度的问题时,只需查看您要完成工作的次数。
在这里,在你的问题中,无论你正在做什么工作,让我们说打印一些东西,你打算做外循环的次数,外循环本身运行n长度。 因此,你将完成1 + 2 + 3 + .... n次的工作 变成了 N *(N + 1)/ 2 次。
因此,它只是O(n ^ 2)
答案 2 :(得分:2)
N-1。对于i = n-1,内循环运行n次
所以,总时间= 1 + 2 + 3 + .... + n
N *(N + 1)/ 2
并表示为O(n ^ 2)
答案 3 :(得分:1)
时间复杂度是n平方的大O,即O(n^2)
对于外部活套,它是n
内圈成本为1 + 2 + 3,...n-2, n-1, n
总费用为O(n^2)
答案 4 :(得分:1)
二次函数(二次运行时间)
,则称算法为二次方出现二次函数的主要原因是嵌套循环,其中内循环执行线性运算数n,外循环也执行线性运算数n,因此,在这种情况下,整个算法执行次操作。
n是任何给定数组中的元素数。
如果数组中的元素数是10,这意味着完成逻辑执行需要10 * 10 = 100次操作。
一个很好的例子是检查列表中出现的单个项目的数量,这需要将列表中的每个元素与列表中的所有元素(包括其自身)进行比较。
二次函数图:
我有一个旧的 BigO 符号说明,涵盖7个最着名的运行时复杂性,看看这是否有用BigO