查找——索引顺序表和倒排表

查找8.3 索引顺序表和倒排表8.3.1 索引顺序表8.3 索引顺序表和倒排表当数据表中的数据元素个数n很大时,如果用顺序查找结构,则查找效率极低。如果采用有序表存储形式的折半查找,则为了维持数据表的有序性,时间开销很大;而且,当数据表很大时,计算机内存的容量可能不够。这时可采用索引方法来实现存储和查找。8.3.1 索引顺序表索引顺序表一般由主表和索引表两个部分组成,两者均采用顺序存储结构。主表中存放数据元素的全部信息,索引表中存放数据元素的主键字和索引信息。在图8-3所示的学生信息表的例子中
摘要由CSDN通过智能技术生成

8.3 索引顺序表和倒排表

当数据表中的数据元素个数n很大时,如果用顺序查找结构,则查找效率极低。如果采用有序表存储形式的折半查找,则为了维持数据表的有序性,时间开销很大;而且,当数据表很大时,计算机内存的容量可能不够。这时可采用索引方法来实现存储和查找。

8.3.1 索引顺序表

  1. 索引顺序表一般由主表索引表两个部分组成,两者均采用顺序存储结构。
    主表中存放数据元素的全部信息索引表中存放数据元素的主键字和索引信息

(1)完全索引

  1. 在图8-3所示的学生信息表的例子中,一个索引项对应数据表中一个数据元素,这时的索引结构叫作稠密索引也称完全索引。稠密索引结构适用于当数据元素在外存中按加入次序存放而不是按关键字有序存放的情形。
    在这里插入图片描述
  2. 完全索引表中关键字分块有序存放,即把所有n个索引项分为m个块 (子表),井且后一个子表中所有的关键字均大于前一个子表中所有的关键字,而在同一子表中所有关键字的次序任意。分块有序,索引按照关键字的大小建立,可知大于某个值或者小于某个值可以到哪个块里面去查找。经典的分块查找要求块间有序、块内也有序,如果块与块无序就无法建立索引。
  3. 分块查找的具体实现
    转载自:https://www.cnblogs.com/ciyeer/p/9067048.html
#include <stdio.h>
#include <stdlib.h>
struct index {
      //定义块的结构
  int key;
  int start;
} newIndex[3];  //定义结构体数组
int search(int key, int a[]);
int cmp(const void *a,const void* b){
   
  return (*(struct index*)a).key>(*(struct index*)b).key?1:-1;
}
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值