查找列表A中列表B中的所有元素

时间:2017-05-06 14:45:38

标签: algorithm asymptotic-complexity

我有问题的二次解决方案如下:

A = [12, 45, 23, 50, 87, 57]
B = [32, 10, 12, 57, 34, 99]

for i in range(len(A)):
    for j in range(len(B)):
         if A[i] == B[j]:
               print(A[i])

这当然是O(N^2)

我想到的另一个解决方案是排序列表BO(n*log(n))然后二进制搜索到BO(log(n)),然后执行NA中的所有项目。这是O(2*n*log(n)))最糟糕的情况,但是w会丢弃2,因为它是一个常数,我们有O(n*log(n))

这是对的吗?有没有办法进一步改善呢?

0 个答案:

没有答案