什么是支持除数组之外的随机访问的其他数据结构?

时间:2011-09-04 09:06:19

标签: arrays data-structures random-access

我正在考虑是否有任何其他支持随机访问的数据结构(即:恒定时间复杂度) 在我看来,只有数组是以这种方式构建的。

注意:您无法在数组

之上构建数据结构

3 个答案:

答案 0 :(得分:1)

哈希表还允许在给定密钥的情况下随机访问。因此,与数组相反,它们是基于键的,而不是基于索引的,但仍允许对给定元素进行O(1)访问。

答案 1 :(得分:1)

最后,它取决于你对“数组”的意思。我会告诉你RAM是一个很大的字节数组(技术上是一个很大的字节数组加上一些重载的方法来读取它们的块数为1,2,(几乎总是)4和(有时)8字节并不总是有效如果您尝试从具有该数字的“未对齐”字节开始读取(或不完全停止)。所以一切都建立在数组之上。

如果通过“Array”你只是指“我正在使用的语言调用Array的结构以及基于该数组的那种语言的所有结构”,那么我可以简单地(在C代码中)malloc a内存块并以类似于数组的方式使用它(并且可能在其上构建一个哈希表)。关键词是“相似”。

如果有足够的虚拟地址空间,您可以使用VirtualAlloc(在Windows下,在Linux下为mmap)使用计算机的MMU模拟哈希表。这将是相当昂贵和无用的:-)我仍然认为它是一个由另一个名称(一个“稀疏”数组)的数组。

答案 2 :(得分:0)

我可以想到列表和词典。 由于词典是键值对,因此它们“更”随机访问友好。