我在很大程度上了解链接列表的复杂性。在最坏的情况下访问一个项目是 O(n),因为它可能在最后或不存在。将 O(1) 添加到未排序的链接列表中,因为您可以将其添加为头部。
但是对于数组,我很困惑。我已经阅读了很多关于访问效率如何(O(1))的内容,但添加不一定,删除也不一定。为什么是这样?
是因为加法并不总是在最后吗?那里会是O(1),对吧?但如果是在另一个点,你就必须移动项目,这将是 O(n)?这是在“幕后”发生的,可以用高级语言说,对吧?它正在移动内存位置,这就是复杂性开始的地方?
删除会导致我收集到间隙?它必须填写吗?
基本上,如果我有一个包含 10 个项目的数组,并且我要在第 5 个索引点添加一个项目,它是否必须将所有项目从索引 5 和更高的索引点复制到一个更高的索引点,从而导致操作是 O(n)?
任何澄清将不胜感激。