《大话数据结构》读书笔记——查找算法

第八章:查找

查找就是根据给定的某个值,在查找表中确定一个关键字等于给定值的数据元素

查找概论

查找表:同一元素数据构成的集合

关键字:数据元素中某个数据项的值

分类

  • 静态查找表
  • 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从数据表中删除已经存在的某个数据元素

为了提高查找效率,需要专门为查找操作设置数据结构,这种面向查找操作的数据结构称为查找结构。

查找方式:静态查找表

顺序表查找

顺序遍历数据,逐个比较

有序表查找

1.二分查找(折半查找):适用于顺序静态查找表,时间复杂度为O(logn)

2.查值查找:对二分查找的改进,时间复杂度为O(logn)

3.斐波那契查找:时间复杂度为O(logn),最坏情况劣于折半查找

本质区别是分隔点的选择不同。

线性索引查找

线性索引是将索引项集合组织为线性结构,也称为索引表

1.稠密索引:在线性索引中,将数据集中在每个记录对应一个索引项,索引表是有序的,所以可以用有序查找方式

2.分块索引:

  • 把数据集的记录分成了若干块,并且这些块需要满足:块内无序(有序最好),块间有序(因此可以有序表查找方式)。
  • 对于分块有序的数据集,把每块对应一个索引项,索引项数据包含三个数据项
  1. 最大关键码,存储每一块中的最大关键字
  2. 每块的数据个数
  3. 块首数据元素的指针

3.倒排索引:通过属性查找值

索引表结构

  • 次关键码
  • 记录号表

查找方式:动态查找表

*二叉排序树

*平衡二叉树(AVL树)

*多路查找树(B树,B+树)

哈希表(散列表)

散列技术是在记录的存储位置和它的关键字key之间建立一个确定的对应关系F,使得每个关键字key对应一个存储位置f(key)

其中F称为哈希函数,这个查找表称为哈希表(散列表),主要用来查找,也可以存储

哈希函数构造方法:

要求:

  • 计算简单
  • 散列地址分布均匀

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值