算法中的抽象数据类型



我们在应用程序中使用的数据结构通常包含处理各种类型的信息信息可以属于多个独立的数据结构。对于例如人员数据的文件可以包含具有名称的记录,地址以及关于雇员的各种其他信息;并且每个记录可能需要属于一个用于搜索的数据结构对于特定员工,连接到另一个数据结构以进行回答统计查询等等。

尽管存在这种多样性和复杂性应用程序涉及数据对象的一般操作,并且需要在有限数量的具体原因。所需的许多操作都是基本计算程序的自然结果,因此在广泛的应用中需要。

上述文本是由Robert Sedwick在C++中的Algorithms中在抽象数据类型的上下文中描述的。

我的问题是,作者在上面提到的第一段是什么意思?

数据结构是数据存储和算法的组合,用于处理这些数据组织,以提供具有特定约束的某些操作(搜索、索引、排序、更新、添加等)的实现。这些是软件中信息表示的构建块(在黑盒意义上)。在最基本的层面上,这些是队列、堆栈、列表、哈希图/关联容器、堆、树等。

不同的数据结构具有不同的权衡。你必须在正确的情况下使用正确的。这是关键。

有鉴于此,您可以并行使用多个(或"复合")数据结构,这些数据结构允许以不同的方式对同一逻辑数据进行查询和操作,从而填补彼此的权衡(优势/劣势,例如一个可能被预先排序,另一个可能擅长跟踪更改,但从中删除条目的成本更高,等等),通常以一些额外开销为代价,因为这些数据结构将需要保持彼此同步。

如果知道这一切的结论是什么,但从我收集的信息来看,这会有所帮助:

员工记录:

Name Address Phone-Number      Salary Bank-Account      Department Superior

正如你所看到的,员工数据库中有每个员工的信息,这些信息本身就被"细分"为或多或少独立的部分:员工的联系信息与他工作的部门或工资几乎没有关系。

编辑:因此,根据需要做什么样的事情,需要以不同的方式看待这张更大唱片的不同部分。如果你想知道你总共支付了多少工资,你需要做的事情与查找员工的电话号码不同。

一个对象可能是另一个对象/结构的一部分,并且关联不是唯一的;一个对象可以是多个不同结构的一部分,这取决于上下文。

比方说,有一个公司员工约翰。他的"员工记录"将出现在团队成员名单、工资名单、安全许可名单、停车位分配等中。

并非所有这些情况下都需要他"员工记录"中包含的所有数据。他的专业领域不需要分配停车位,他的婚姻状况也不应该在会议室分配中发挥作用-他的条目所属的独立子系统和更大的结构不需要包含在他的条目中的所有数据,只需要其中的特定部分。

最新更新