Delphi 中的“TList”对象与它的“items[i]”属性有点混淆。此属性暗示 TList 可能会在某种数组中内部索引其所有列表项。
我完全知道,尽管这样的索引属性可以在对象内部任意处理(在这种情况下,例如假设通过线性遍历整个链表直到使用提供的索引命中项目),所以我的问题是:以下哪个替代方案是真实的:
1. TList 确实在某种(动态)数组中对其项目进行内部索引,因此具有任意索引的列表项查找将具有 O(1) 时间复杂度(即常数),而列表项添加将具有 O(n ) 复杂性(即线性),因为在扩展大小时必须重新分配数组。
2. TList 不会在某种(动态)数组中对其项目进行内部索引,因此具有任意索引的列表项查找将具有 O(n) 时间复杂度(即线性),而添加的列表项将具有 O(1 ) 复杂性(即常数)。
3. 另一个第三种选择,在这种情况下,非常欢迎您解释查找(按索引)和插入操作的时间复杂度。