字典和集合.PDFVIP

  • 9
  • 0
  • 约 41页
  • 2017-11-04 发布于天津
  • 举报
字典和集合

孙猛 /teachers/sunm 2016年11月28 日 1 • 字典及其抽象数据类型 • 字典的线性表实现 • ⼆分法检索 • 集合的抽象数据类型及实现 2 • 数据的存储和访问是计算中最重要最基本的⼯作,也是各种计算机 应⽤和信息处理的基础。 • 在许多情况下,计算过程并不知道数据的存储位置,但需要使⽤数 据,此时⾸先需要找到数据存储的位置,这⼀操作称为检索。 • ⼀些具体应⽤中数据的存储和检索(查询)的例⼦: • 电⼦字典,基本功能就是基于算法的数据检索 • 图书馆编⽬⽬录和检索系统,⽀持读者检索书籍资料的有关信息 • 规模巨⼤的有机物库,需要基于结构或光谱等参数进⾏检索 • 我们要讨论的是基于关键码的数据存储和检索 • 关键码指数据项的某种(具有唯⼀性的)特征,可以是数据内容的组成部分, 也可以是专⻔为数据检索建⽴的标签 • ⽀持这种操作的数据结构,通常称为字典、查找表或映射 3 • 字典就是实现存储和检索的结构。需要存储和检索的信息和 环境有许多具体情况,因此要考虑各种不同的字典实现技术 • 字典的实现可以⽤到前⾯讨论过的许多想法和结构。包括 • 各种线性结构、树性结构及其各种组合 • 涉及到在这些结构上操作的许多算法 • 组织⽅法很多,下⾯讨论顺序、散列、⼆叉树和其他树形结构等 • 这⾥的基本问题是空间利⽤率和操作效率 • 字典的最主要也是使⽤最频繁的操作是检索(searching , 也称查找) • 检索效率是字典实现中最重要的考虑因素 • 由于规模不同,检索效率的重要性也可能不同 4 • 字典可以分为两类: – 静态字典:建⽴后保持不变,只做检索,实现只需考虑检索效率 – 动态字典:内容经常动态变动的字典。除检索外,基本操作还包 括插⼊和删除等,实现时就必须考虑插⼊删除操作的效率 • 动态字典的插⼊删除操作可能导致字典结构的变化。要⽀持 ⻓期使⽤,还需要考虑字典在动态变化中能否保持良好的结 构,能否保证良好的检索效率?(字典的性能不应该随着反 复操作⽽逐渐恶化) 5 • 衡量⼀个字典检索算法, 需要考虑 • 平均检索⻓度ASL (Average Search Length) ; 检索过程中对关键码的平均⽐较次数, 即 ASL(n)=∑ n p c , i=1 i i 其中 n 是字典中元素的个数,p i 是查找第 i 个元素的概 率,c 是找第i 个元素的⽐较次数。 i • 检索失败的概率及各种失败情况所需花费的⽐较次数; • 空间开销; • 算法是否易于理解等等。 6 • 字典:⼀种特殊的集合; • 每个元素都有两部分组成,即关键码和属性(也称为值) : • 可以依据关键码对字典元素进⾏排序。 • 字典元素的插⼊、删除和检索等操作⼀般以关键码为依据进⾏。 • 包含关键码和属性的⼆元组称作关联。 • 关联k,v :关键码值k到属性值v的⼀个对应。 • 字典: 从关键码值集合到值集合的⼆元关系: D ={k,v | k∈K

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档