有人可以解释一下LinkedList中方法node(int index)的逻辑吗?什么使位偏移量为 1:
(index < (size >> 1))
方法:
Node<E> node(int index) {
if `(index < (size >> 1)) {
Node<E> x = first;
for (int i = 0; i < index; i++)
x = x.next;
return x;
} else {
Node<E> x = last;
for (int i = size - 1; i > index; i--)
x = x.prev;
return x;
}
}
感谢您的解答!
最佳答案
size >> 1
相当于 size / 2
我猜这个函数找到了 node
在索引x
.
基本上,它的作用是比较 index
与节点总数。
如果index < size/2
然后它从0
开始搜索至size/2
如果index > size/2
然后它从size
开始搜索至size/2
例如,如果您不比较 index
与 size/2
,您可能会循环整个列表,即 O(n)
。通过这样做,您可以将迭代次数减少一半。 (O(n/2)
)
关于java - 链表中的节点(int索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50297483/