一尘不染

算法-未排序数组中删除的时间复杂度

algorithm

假设有一个未排序的数组A,它包含一个元素x(x是元素的指针),并且每个元素都有一个附属变量k。因此,我们可以获得以下时间复杂度(最坏的情况):

如果我们要 搜索 特定的K,则它的成本为O(n)。

如果我们要 插入 一个元素,那么它的成本为O(1),因为A只是将元素添加到末尾。

如果我们知道x,然后将其从数组A中 删除 怎么办?

我们必须先 搜索 xk并获取x的索引,然后通过A中的索引 删除 x,对吗?

因此,对于 Delete ,它也花费O(n),对吗?

谢谢


阅读 395

收藏
2020-07-28

共1个答案

一尘不染

查找具有给定值的元素是线性的。

由于数组仍未排序,因此您可以在固定时间内自行删除。首先将要删除的元素交换到数组的末尾,然后将数组大小减小一个元素。

2020-07-28