我无法理解为什么这段代码的O(log 2 ^ n)为其Big O表示法:
for (int i = n; i>=1; i=i/2){
sum = i+j;
}
Run Code Online (Sandbox Code Playgroud)
我以为它会是O(n).
我在这里阅读链接列表,我有点困惑。我已经把它画出来了,但看起来它们仍然是一样的。
遍历链表:
Node tmp = head;
while(tmp != null) {
tmp = tmp.next;
}
Run Code Online (Sandbox Code Playgroud)
我对 while 循环的思考过程:tmp 从头开始。现在,当 tmp 指向下一个节点时,tmp 继续指向它旁边的节点。它一直持续到 tmp 没有指向它旁边的另一个节点。
添加到链表的末尾:
public void addLast(AnyType item)
{
if(head == null) addFirst(item);
else
{
Node<AnyType> tmp = head;
while(tmp.next != null)
tmp = tmp.next;
tmp.next = new Node<AnyType>(item, null);
}
}
Run Code Online (Sandbox Code Playgroud)
我对 while 循环的思考过程:tmp 从头开始。现在,当 tmp 指向下一个节点时,tmp 继续指向它旁边的节点。它一直持续到 tmp 没有指向它旁边的另一个节点。然后它跳出循环并分配 tmp 指向新节点旁边。