使用数组对有界集合进行添加/删除操作的最坏情况场景时间复杂性?

时间:2019-02-21 15:26:07

标签: java algorithm data-structures time-complexity

我之所以将其标记为Java,是因为我从“ Java Collections”(这是我正在学习的课程的推荐文字)中摘录了这句话。

因此,对于这两个添加/删除操作,我都知道首先进行二进制搜索来确定集合中是否包含特定元素,并确定必须在何处添加/删除元素,然后在必要时进行移位。

我从书中引用加法操作:

“搜索阶段为O(logn)。插入阶段为O(n),但是如果要添加的值已经是成员,则跳过该阶段。因此,总体上来说,该操作为O(n)”

为什么整体时间复杂度不是O(n x logn)?

此外,如果您有其他建议的文字,对于外行来说可能会更容易推荐,那么将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:3)

由于二进制搜索为O(logn),并且插入阶段为O(n),因此时间复杂度从技术上讲为O(n + logn)。由于与n相比,logn无关紧要,因此您只需删除给出答案O(n)的logn。