【发布时间】:2009-06-29 08:22:00
【问题描述】:
这个问题是关于我想到的一个数据结构。它是一个动态数组,类似于 C++ 中的 std::vector,只是删除算法不同。
在一个普通的动态数组中,当一个元素被移除时,剩下的所有元素都必须下移,即O(n),除非是最后一个元素,即O(1)。
在这一个中,如果有任何元素被移除,则将其替换为最后一个元素。这当然会失去元素的顺序。但是现在移除任何元素都是常数时间。
一个列表将具有相同的删除时间,但此结构具有随机访问权限。唯一需要注意的是你不知道你正在访问什么,因为排序可能会很混乱,所以无论如何使用随机访问。另外,列表不会弄乱任何指向元素的指针/迭代器。
嗯,这个结构似乎没什么用,除了严格遍历元素并可能沿途移除它们的非常具体的任务。列表也可以做同样的事情,但缓存性能更好。
那么,这个奇怪/无用的结构有名字吗?它有什么用途吗?还是只是一场不错的小头脑风暴?
【问题讨论】:
-
通常(IMO),当我们需要随机访问时,我们也需要排序。不过,这个想法非常有趣。