数据结构与算法:字典和集合

* 数据存储和访问:~是计算机最基本的功能。
* 检索(检查):找到数据的存储位置。知道了数据保存在哪里,只需要常量时间就可以得到它。
* 检索码(关键码):检索时提供的信息。
* 关联数据:数据项由两部分组成,一是关键码,二是与关键码相关联的实际数据。
* 字典(查找表、映射、关联表):支持基于关键码的数据存储与检索的数据结构。
* 静态字典:字典建立之后,内容和结构不在变化,主要操作只有检索,实现时只需考虑检索效率。(适合用最佳二叉排序树实现)
* 动态字典:字典初始创建之后,内容和结构将一直处于动态变动之中,主要操作有检索、插入、删除,实现时不仅要考虑检索效率,插入、删除效率也要考虑。
* 平均检索长度:在一次完整检索过程中,比较关键码的平均次数就称为~。
* 索引:做基于关键码的索引,就是要实现从关键码到数据存储位置的映射。这种映射就是索引。
* 关联:一个数据项就是一个二元组(关键码、值),称之为关联。
* 有序集合:元素之间存在某种顺序存储的集合。(比如整数的小于等于关系,字符串的字典序)
* 二分法检索:1.从元素范围中取出位置居中的那个数据项,用检索关键码和它比较,如果想等检索结束。如果检索关键码较大,则把检索范围修改为中间项之后的半区间;如果较小,则修改为中间项之前的半区间。2.重复步骤1,如果检索范围中已经没有数据了还没找到相等的关键码,就是检索失败结束。
* 判定树:用二叉树来表示关键码排序的顺序表字典,树中结点所标的数是数据项的关键码。(树中除叶结点外的每个分支结点都是一个关键码范围的居中位置的那个关键码,它的左子树是这个关键码范围的最小值,右子树是最大值)
* 散列表(哈希表):如果数据项连续存储,而关键码就是存储数据的地址(或下标)。在这种情况下,基于关键码能最快找到所需的数据(O(1)时间)。但是,关键码不一定都是整数,可能是字符串,那就不能作为地址(下标)了。况且,即便关键码是整数,也可能因为取值太大而不适合作为地址(下标)。可以考虑通过一个变换(一个计算)把它们映射为一种下标。这样做,就把基于关键码的检索变为了基于整数下标(存储数据的地址)的直接元素访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值