【发布时间】:2012-02-21 12:30:51
【问题描述】:
有什么区别吗?还是说它们是同一事物的两个术语?
【问题讨论】:
-
它与 HTML 有什么关系?
标签: arrays data-structures html-lists
有什么区别吗?还是说它们是同一事物的两个术语?
【问题讨论】:
标签: arrays data-structures html-lists
数组和列表是不同的数据结构。数组不一定是有序的。
在性能方面,维护有序列表非常昂贵:O(N) 插入、删除,但您可以比 O(N) 更快地进行搜索(使用类似二进制搜索的方法)。使用常规数组,搜索是 O(N)。使用数组,您可以在 O(1) 中对成员进行随机访问,而这需要 O(N) 在列表中。
【讨论】:
虽然数组和列表有一些相似之处,但它们的用途不同。
数组是一段连续的内存,而列表只是一堆节点,每个节点都有指向“下一个”节点的指针(在双向列表的情况下也指向“前一个”节点) .
高效的数组 - 在 O(1) 中 - 支持随机访问(即通过任意给定的索引 i),但是将元素删除/插入到数组中很慢 - O(n),因为您必须在删除后移动所有元素/插入元素。 另一方面,列表不支持高效的随机访问(同时支持高效的连续遍历),但插入和删除速度很快 - O(1)。
看这张图:: 并在this link 获得更好的解释。
【讨论】:
数组中的项目不一定按任何特定顺序。
通常,将项目添加到列表中的特定点比在数组中的等效点添加新项目更快。 (在数组中,您必须将其他条目打乱;在列表中,您只需在最多 3 个元素中调整适当的指针。)从列表和数组中删除元素也是如此。
访问列表中的第 Nth 项需要 O(N) 时间,但对于数组来说是 O(1) 时间。
【讨论】: