treeset的removeAll()的性能(Big-O)是多少?

时间:2011-11-08 23:41:22

标签: big-o treeset removeall

我正在学习Java数据结构课程。我的一个任务要求我选择我选择的数据结构并编写一个拼写检查程序。我正在检查不同数据结构的性能。

我去了树集的api,这就是它说的...... “此实现为基本操作(添加,删除和包含)提供了有保证的log(n)时间成本。”

会包含removeAll()吗?

我怎么能够弄明白呢

提前谢谢

2 个答案:

答案 0 :(得分:2)

它不包括removeAll(),但我不同意polkageist的回答。 removeAll()可能会在不变的时间内执行,具体取决于实现,尽管执行很可能是在线性时间内执行的。

我认为NlogN会以非常糟糕的方式实施。如果要删除每个元素,则无需搜索元素。您需要删除任何元素,因此无需搜索。

答案 1 :(得分:0)

不。对于大小为k的参数集合,removeAll()的最坏情况上限当然是O(k * log n) - 因为参数集合中包含的元素的每个都必须从树集中删除(这至少需要搜索它们),每次搜索都会产生log n的成本。