数据结构——静态查找

静态查找表,意思是针对这个表进行静态查找,何为静态,那就是不能动态修改表中内容,不能对表进行增加、删除。

静态查表表,有哪几种基本办法呢?

顺序查找法、折半查找法、分块查找法

顺序查找法,从队列头部逐个比对到末尾就可以了。存储数据可以使用数组或链表,数据通常没有非递增、非递减关系

 

折半查找:针对有严格大小顺序排列的序列,需要定两个变量一个指向存储空间的首部、一个指向尾部。然后用求平均的方式找到中间位置数,将这个数的大小与被查找数进行比较,通过大小来修改两个变量的指向。

例如:a[7] = {1,3,4,5,7,8,9 }             输入数字3试查找表内是否有3

变量 int low, high, mid;  low  = 0; high = 6;      //分别指向有序序列两端, mid为存放平均值变量

(1)mid = (6 + 0) / 2 = 3;      将a[3]与3比较          a[3] = 5 ;大于3 所以high = 3 - 1 = 2;

(2) mid = (2 + 0) / 2 = 1     a[1] = 3与3相等,则找到要找的数,比较函数结束

 

分块查找

存储特点:一个有n个数据元素的数组或链表,将其分成几段(S0,S2,S3,S4 ... Sm-1),这里设为m段,这m段之间有大小关系,即S1中的元素 全小于或大于 S2中元素,以此类推。 另外需要一个索引表,存储每块的第一个元素位置和每块中的最大元素数值是多少。

当查找数字X时,先在索引表里查找,数字X会在哪一个块的数据范围中,如果Max(k - 1) < X < Max(k)(1 < k < m),则X在k块中,接下来就可以在k块中使用线性查找,如果存在返回成功,不存在则返回失败。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值