20180313分块查找

前置知识

  • 是对顺序查找的一种改进。

本期内容

名词解释

  • 查找过程
    • 将查找表分为各干个子表
      • 对子表进立索引表,查找表的每一个子表由索引表中的索引项确定。要求索引项按关键字字段进行有序排列
      • 索引项包括:
        • 关键字字段(存放对应子表中的最大关键字值) 【看过其它材料,最小关键字也是可以的】
        • 地址字段(存放指向对应子表的指针)
    • 查找时,先用给定值x在索引表中检测索引项,以确定所要进行的查找在查找表中的查找分块(由于索引项按关键字字段进行有序排列),然后再对该分块进行顺序查找。
  • 实际举例
    • 平均划分子表,最后一个可以不满;
    • 索引项中关键字段呢,就是当前子表中的最大值;

实现

  • 时间复杂度

    • 索引查找子表查找两步之和。具体见纸上的笔记
  • 别人实现

总体评价

  • 优点:找到块后,就在该块内进行操作,不需要移动大量记录。
  • **主要代价:**增加了一个辅助数组的存储空间和将初始表分块排序的运算。

代码学习

履历

  • 20180313整理完,但以下三点没弄清楚
    • 代码的实现
    • 时间复杂度的计算
    • 分块的索引跟K进行对比,有啥科学依据没?是分块的最大值必须和K相等,还是与K的值相减后在合理区间内?【第1块<K<第2块,因为第1块最大的小于K,而第2块是最大的的大于K,所以只能在第二块】

猜你喜欢

转载自my.oschina.net/wolflion/blog/1633923