数据结构定义

2024 年 8 月 28 日 | 阅读 6 分钟

如果一个公司或组织要在当今竞争激烈的商业世界中蓬勃发展,数据可能是其最强大的武器之一。当有更多信息可用时,就会有更多的选择和更好的解决方案来应对问题和挑战。将信息保持有组织和可访问性只是与这些数据相关的重大责任之一。任何数量的数据只有在企业能够访问并将它们转化为宝贵资产时才能有所帮助。

什么是数据结构?

什么是数据?在定义数据结构之前,让我们先退一步。

数据是知识。数据是存储在计算机上以优化处理和传输的事实和统计信息。数据结构是一种以特定格式组织数据的特定方式,以便可以有效地在计算机上进行安排、分析、存储和检索。它们是管理数据的用户友好方式。算法是一组有序的规则和指令,用于执行程序以获得期望的输出。数据和算法构成了每个程序、软件和应用程序的基础。

数据结构是通过连接的数据和对数据进行操作来实现的。

程序 = 数据结构 + 算法

数据结构的规格

数据结构系统地组织数据。数据结构包括以下特性

非线性与线性:此特性以数组、图等格式顺序组织数据。

动态与静态:静态数据结构具有固定的内存位置、格式和大小。数据编译在静态特性中可见。

时间复杂度:需要仔细考虑时间。程序的运行或执行时间应该受到限制。运行时间应该尽可能短。运行时间越短,设备越准确。

正确性:每种数据无疑都必须有一个接口。接口代表数据结构支持的一组函数。接口应正确实现数据结构。

空间复杂度:空间复杂度是指程序相对于其输入大小所占用的总内存量。应注意处理程序的空间。适当地利用内存很重要。

线性数据排列

线性数据结构的数据元素按顺序相互链接,每个元素都链接到其前面的元素和后面的元素。这使得结构可以在单次运行中进行遍历。

Stack

Array

Queue

链表

Stack

这种类型的线性数据结构存储数据项的先进后出或后进先出顺序。使用堆栈,可以在同一端同时插入和取出元素。这两个指令都遵循 FILO 顺序。以下方法可用于在 Python 中创建堆栈。

Queue.LifoQueue

列表

Collections.deque

堆栈使用“Push”和“Pop”这两个词,而不是“insert”和“delete”。

Array

它是一组相邻内存位置中存储的相关数据。Python 也使用数组。数组的操作范围从 0 到 (n-1),其中“n”表示数组的大小。数组有两种。它们是

  • 一维数组
  • 多维数组

Queue

队列是一种使用 FIFO 顺序的线性数据结构。FIFO 是 First In/First Out 的缩写。根据顺序,最先放入的元素最先被移除。队列数据结构的特点是

  • 添加一个组件
  • 移除组件
  • 访问时间

链表

按顺序存储的数据结构称为链表。链表由包含值和指向下一个节点的地址的节点组成。列表的头部是任何数据结构的第一个元素。链表促进内存分配并存储内部结构中的数据等。链表有三种不同的类型。它们是

  • 单向链表
  • 双向链表
  • 循环链表

非线性数据结构

数据项被随机放置的信息结构称为非线性数据结构。元素不按优先顺序组织。数据项有不同的层。在一个元素可以转到另一个元素的非线性数据结构中有多种方式。非线性数据结构之间连接着它们的数据片段以及一个或多个其他元素。非线性数据结构有两种不同的类型。如下

  • 树形数据结构
  • 图数据结构

最适合用于您下一个项目的的数据结构

每种数据结构都应补充所需的数据操作,因为它更适合特定的工作集。做出正确的选择至关重要,因为目标和结构之间的不匹配可能会降低程序的效率或增加其复杂性。此外,可以使用多种数据结构来表示相同的信息。例如,有序列表可以组织成树状结构或数组。虽然数组对于有限的数据收集可能更简单,但树形结构更有效。

在某些情况下,某些数据结构特别普遍。例如,编译器几乎总是使用哈希表来查找变量的类型和当前值。一些数据结构是为特定目的而创建的。以下是一些在选择数据结构时需要考虑的因素。

存储容量:虽然它们需要更多内存,但某些数据结构非常有用且简单。在内存有限的环境中,链表和其他简单的数据结构效果很好。

性能规格:数组很简单,但搜索特定项目可能很耗时。哈希表或基于指针的树结构通常更快。开发人员必须始终考虑其程序的性能规格。权衡通常是必要的,但无效的数据结构和算法很容易变得无用。Big O 表示法也涉及这个问题。算法的 Big O 值解释了执行时间如何随着数据集大小的增加而增长。

信息类型:数据结构通常由数据的类型和性质决定。对于排序和无序数据,不同的结构都有优势。数组可以存储像整数列表这样的基本数据元素。然而,图结构能更有效地处理事物之间的链接列表。

信息使用:选择数据结构需要考虑数据的预期用途。如果数据经常更新或访问,则需要更有效的数据格式。

易用性:某些数据结构易于使用和实现,即使对于新手程序员也是如此。通常最好为性能要求宽松的简单内部应用程序使用简单结构。

持久性:可能存在一种有效的方法来存储不应保存的瞬时信息。管理已存储数据的最佳方法是使用可访问的数据结构。

许多因素经常影响数据结构的选择。通常,有多种出色的选择。以下是一些说明不同数据结构选择的示例。

  • 如果必须读取和处理无序列表中的所有元素一次,则数组是一个不错的简单选择。在这种情况下,数组快速、可扩展且简单。
  • 图旨在快速有效地显示对象之间的关系。遗憾的是,它们是最复杂的数据结构之一,正确使用它们需要大量的专业知识。然而,如果这些对象之间的链接确实很重要,那么更复杂图数据结构是唯一合理的选择。

结论

“一种帮助开发人员组织、管理和存储信息的格式”是数据结构的定义。计算机数据结构根据项之间的关系、可能对其进行的操作以及对象的实际值来表征。尽管开发人员经常为应用程序创建新的数据结构和算法,但主要的编程语言已经有许多结构。

存在一些线性数据结构。这意味着元素以逻辑顺序排列。当元素之间的连接很重要时,应使用非线性方法。最常用的数据结构是数组、堆栈、队列、记录、树、图、链表和哈希表。选择要使用的数据结构涉及许多不同的考虑因素。然而,最重要的因素是性能、可用性和内存使用。如果您有兴趣测试本文介绍的某些数据结构,请访问我们文档集合的 Python 部分。本节的指南涵盖了 Python 的各种基本数据类型以及线性数据类型。


下一主题决策制定定义