据我所知,这是O(N ^ 2):
Loop from i=1 to N
Loop from j=1 to N
Do something with i,j
但是这个怎么样?
Loop from i=1 to N
Loop from j=1 to i
Do something with i,j
它仍然是O(N^2)
还是O(N log N)
?我真的不明白该怎么说。
答案 0 :(得分:1)
这也是O(N^2)
。
N(N-1)/ 2~ O(N^2)
。
i = 1 than j = 1
i = 2 than j = 1 to 2
i = 3 than j = 1 to 3
i = 4 than j = 1 to 4
…….
…
i = N than j = 1 to N
So for total is 1 + 2 + 3 + 4 + …. + N = (N * (N+1))/2 ~ O(N^2).
答案 1 :(得分:0)
对于第二个问题,运行时间将为O (1/2 N^2)
,后来变为O(N^2)
,因为我们不关心O
表示法中的常量。通常,log N
算法涉及将子问题划分为每次迭代中实际大小的一半大小。以合并排序为例。在合并排序中,在每次迭代中,它将数组的大小分成一半。
答案 2 :(得分:0)
也是O(n ^ 2)。 您必须查看代码运行时间的最坏情况。 所以第一个循环从1到N. 对于该循环的每次迭代,都有第二个循环,它从1运行到i。
我们知道在最后一次迭代中我将是N,因此它将运行O(N * N),即(N ^ 2)
我们忽略big-O表示法中的常量。
如果这些概念很难,请尝试使用Google搜索一些教程和示例。你需要的只是一些练习,你会得到它。