public static int Count( List<Integer> lst1, List<Integer> lst2)
{
Iterator<Integer> itr1 = lst1.iterator();
int count=0;
while ( itr1.hasNext() )
{
Integer x = itr1.next();
Iterator<Integer> itr2 = lst2.iterator();
while ( itr2.hasNext() )
if ( x.equals( itr2.next()) )
count++;
}
return count;
}
我选择了两个,因为第一个循环O(n)
然后是O(n)
时的分段和O(n) = O(n^3)
的if。我不知道我是不是错了?
答案 0 :(得分:6)
这是O(size(lst1)*size(lst2))
。对于lst1
中的所有x i ,您将x i 与lst2
中的每个元素进行比较。在这种情况下,它更准确Θ(size(lst1)*size(lst2))
,因为它在size(lst1)*size(lst2)
的上方和下方都有界限。
答案 1 :(得分:0)
毫无疑问.. @steven给了一个很好的数学代表。这里发生的大O是提供给方法的列表大小的倍增。
因为list1
中的每个元素都与list2
中的每个元素进行比较。所以循环运行SizeofList1*SizeOfLit2
。
这是beginner guide有循环。希望你能得到它。