我发现关于
这是否意味着
List.Add()
的渐近复杂度存在很多争议。我怀疑其源头是最坏情况 导致基础数组重新调整大小,逻辑上应该是 O(n)
操作。然而,每次列表空间不足时,数组的大小会增加两倍。这使得需要为 n
个元素调整大小的次数与 log(n)
成比例。这是否意味着
Add
操作在平均情况下的渐近复杂度将为 O(n/log(n))
?
List.Add()
的真实基准如下。但是,对于这种操作,基准测试并不真正具有代表性 - 在任何偏离直线(在对数刻度上)的变化变得可见之前,我们可能已经耗尽了内存。