我在indexOf
和LinkedList
中考虑了Big O运行时和ArrayList
方法。我如何能够提出Big O运行时假设,如何在链接列表中与数组列表相比有什么不同?
LinkedList indexOf()
public int indexOf(Object value)
{
int results = -1;
boolean done = false;
Node<E> ref = head.next;
for(int i = 0; i < size && !done; i++)
{
if(value.equals(ref.value))
{
results = i;
done = true;
}
ref = ref.next;
}
return results;
}
ArrayList indexOf()
if (o == null) {
for (int i = 0; i < size; i++)
if (Values[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(Values[i]))
return i;
}
return -1;
如果对某些人来说这是一个微不足道的问题,我很抱歉,但我需要了解如何提出方法的Big O运行时。
答案 0 :(得分:2)
在这两个实现中,除了一次遍历列表一个元素并将其与您正在寻找的值进行比较之外,您没有比这更好的事情了。在最坏的情况下,您将浏览整个列表,给出O(n)的复杂性。