静态数据结构与动态数据结构之间的主要区别、优缺点是什么?
最常见的数据结构属于哪些类别?
如何确定在哪种情况下使用每种数据结构?
静态数据结构与动态数据结构之间的主要区别、优缺点是什么?
最常见的数据结构属于哪些类别?
如何确定在哪种情况下使用每种数据结构?
简单来说:
数据结构只有几种基本类型: 数组、列表和树。其他所有的结构都可以通过使用这两种结构的不同类型来组合而成(例如哈希表可以用数组实现哈希值,以及一个列表来处理每个哈希值的冲突)。
在这些结构中,数组是静态的(即它们的内存占用量随着对它们进行操作而不会变化),而其他结构是动态的(即通常情况下,内存占用量会发生变化)。
这两种结构之间的差异可以从上面得出:
还有其他差异,但仅在您的数据可能被排序时才会发挥作用。我无法给出详尽的列表,因为许多动态数据结构在不同的操作(“添加”、“删除”、“查找”)下表现出不同的性能特征,因此它们不能被放在一起。
非常明显的区别是排序数组除了“查找”操作外,对于任何其他操作都需要在内存中移动(可能会有很多)内容,而动态结构通常需要执行更少的工作。
所以,总结一下:
编辑:我没有提到图形,这是另一种动态数据结构,可以说不能由更简单的部分组成(树的定义是除了根节点外,每个节点只有一个指向“内部”的链接,而图可能有多个)。然而,图形在“什么情况下最好使用”方面无法与其他结构进行比较,因为你要么需要使用图形,要么不需要(其他结构可能表现出不同的性能,但最终它们都支持相同的操作集)。
简单提示
动态数据结构具有以下特点:
静态数据结构具有以下特点:
总之,对于已知且不会改变的数据集,使用动态结构来存储是不有效的。在这种情况下使用静态数据结构可以节省系统资源,并提供更快的元素访问。另一方面,如果数据的大小可能会发生变化,则使用动态结构。
这总是反过来的,如果你选择静态方式,那么会损失内存,而在动态方面,性能会降低。最好的设计应该有效地使用数据结构,没有完美的答案。