算法中的抽象数据类型

时间:2012-08-20 11:40:45

标签: algorithm data-structures adt

  

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

     

尽管这种多样性和复杂性,还有一大类计算能力   应用程序涉及数据对象的通用操作和需求   访问有限数量的与他们相关的信息   具体原因。许多需要的操作是a   基本计算程序的自然生长,所以它们是   需要广泛的应用程序。

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

我的问题是作者在上面的第一段中的含义是什么?

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

如果一个人知道这一切的结论是什么,但从我收集到的内容中会有所帮助:

员工记录:

Name Address Phone-Number      Salary Bank-Account      Department Superior

正如您所看到的,员工数据库为每位员工提供了信息,这些信息本身被“细分”为多少或多或少的独立部分:员工的联系信息与部门很少或没有关系。工作,或他得到的薪水。

编辑:因此,根据需要做什么样的事情,需要查看这个更大记录的不同部分,可能以不同的方式。如果你想知道你支付的工资总额,你需要做的不同,而不是查找一个员工的电话号码。

答案 2 :(得分:0)

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

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

并非所有这些背景下都需要他的“员工记录”中包含的所有数据。他的专业领域对于停车场分配不是必需的,他的婚姻状况不应该在会议室分配中发挥作用 - 他的入口是其中的一部分的单独的子系统和更大的结构不需要他的条目中包含的所有数据,只是具体部分。