我之所以将其标记为Java,是因为我从“ Java Collections”(这是我正在学习的课程的推荐文字)中摘录了这句话。
因此,对于这两个添加/删除操作,我都知道首先进行二进制搜索来确定集合中是否包含特定元素,并确定必须在何处添加/删除元素,然后在必要时进行移位。
我从书中引用加法操作:
“搜索阶段为O(logn)。插入阶段为O(n),但是如果要添加的值已经是成员,则跳过该阶段。因此,总体上来说,该操作为O(n)”
为什么整体时间复杂度不是O(n x logn)?
此外,如果您有其他建议的文字,对于外行来说可能会更容易推荐,那么将不胜感激。
谢谢。
答案 0 :(得分:3)
由于二进制搜索为O(logn),并且插入阶段为O(n),因此时间复杂度从技术上讲为O(n + logn)。由于与n相比,logn无关紧要,因此您只需删除给出答案O(n)的logn。