假设有一个未排序数组A,并且它包含一个元素x(x是元素的指针),每个元素都有一个附属变量k。因此,我们可以得到以下时间复杂度(针对最坏情况):
如果我们想要搜索特定的K,则需要耗费O(n)。
如果我们想要插入一个元素,则需要耗费O(1),因为A将元素添加到末尾。
那么如果我们知道x,如何从数组A中删除它?
我们必须先搜索x.k并获取x的索引,然后通过其在A中的索引删除x,对吧?
因此,对于删除操作,也需要耗费O(n)对吧?
谢谢
如果我们想要搜索特定的K,则需要耗费O(n)。
如果我们想要插入一个元素,则需要耗费O(1),因为A将元素添加到末尾。
那么如果我们知道x,如何从数组A中删除它?
我们必须先搜索x.k并获取x的索引,然后通过其在A中的索引删除x,对吧?
因此,对于删除操作,也需要耗费O(n)对吧?
谢谢
vector
或Java的ArrayList
),删除集合中间的元素不会改变其余元素的顺序,因此它们必须移动所有其他元素以填补空洞。 - Jerry Coffin