前置知识
- 是对顺序查找的一种改进。
本期内容
名词解释
- 查找过程
- 将查找表分为各干个子表
- 对子表进立索引表,查找表的每一个子表由索引表中的索引项确定。要求索引项按关键字字段进行有序排列。
- 索引项包括:
- 关键字字段(存放对应子表中的最大关键字值) 【看过其它材料,最小关键字也是可以的】
- 地址字段(存放指向对应子表的指针)
- 查找时,先用给定值x在索引表中检测索引项,以确定所要进行的查找在查找表中的查找分块(由于索引项按关键字字段进行有序排列),然后再对该分块进行顺序查找。
- 将查找表分为各干个子表
- 实际举例
- 平均划分子表,最后一个可以不满;
- 索引项中关键字段呢,就是当前子表中的最大值;
实现
-
时间复杂度
- 是索引查找和子表查找两步之和。具体见纸上的笔记。
-
总体评价
- 优点:找到块后,就在该块内进行操作,不需要移动大量记录。
- **主要代价:**增加了一个辅助数组的存储空间和将初始表分块排序的运算。
代码学习
履历
- 20180313整理完,但以下三点没弄清楚
- 代码的实现
- 时间复杂度的计算
- 分块的索引跟K进行对比,有啥科学依据没?是分块的最大值必须和K相等,还是与K的值相减后在合理区间内?【第1块<K<第2块,因为第1块最大的小于K,而第2块是最大的的大于K,所以只能在第二块】