我知道同一个数组的嵌套for循环在O(n ^ 2)中,但是想知道将数组的每个元素与同一个数组中的所有其他元素进行比较的复杂性是多少?假设元素A与元素B进行比较,然后当元素B转向与其他元素进行比较时,它不需要像上一步中那样与A进行比较。因此,每次迭代,数组都会变小。这还是O(n ^ 2)吗?
这样的事情:
for i in xrange(len(list)-1):
v = list.pop(0)
for vi in docs:
merge(v,vi)
谢谢
答案 0 :(得分:7)
我总是喜欢在视觉上给出答案。所有元素的嵌套两个for循环可以被认为是一个矩阵。您将进行以下计算:
n^2 - n
位于 O(n ^ 2)。在视觉上,它将是(X&#39代表计算):
通过你的方法,它将成为一个三角矩阵,类似于(X代表计算):
所以你最终会得到以下数量的计算:
(n-1) x n/2
可以看出,它是前一个的一半,但仍然位于 O(n ^ 2)。