为什么要打扰链表?

时间:2016-10-03 16:42:35

标签: java algorithm arraylist linked-list time-complexity

我不明白你想要一个像arraylist这样的链接列表的上下文。

在arraylist中,随机访问和追加是分摊的常量时间,插入和删除是线性时间。

链接列表,追加和前置也是常量时间(假设你有指向头部和尾部的指针)以及插入和删除,但只有一旦你有正确的元素 - 否则像随机访问这样的东西需要线性时间。

为什么我们会想要后者?这听起来像插入和删除是恒定的时间,但只有在你花费线性时间来找到插入或删除的正确元素之后。

如果你从一个地方做了大量的追加/删除,这是唯一的选择,所以一旦你找到合适的地方,它会很快吗?但是为什么我不能用arraylist做同样的事情,把所有东西都移过k个点然后填充插入?如果数组的剩余大小小于第一部分,如果它是一个arraylist你必须线性地通过,那就更快。

0 个答案:

没有答案