数据结构中的常用查找

本文介绍了数据结构中的查找技术,包括静态查找的顺序查找、折半查找和分块查找,以及动态查找的二叉排序树、平衡二叉树和哈希表。详细讲解了各种查找方法的工作原理和特点,如二叉排序树的性质、平衡二叉树的深度平衡条件,以及哈希表的构造和冲突解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查找:静态查找(顺序查找、折半查找、分块查找)+动态查找(二叉排序树、平衡二叉树、B-树查找)


一、静态查找:不改变原结构的顺序。

1、顺序查找

逐个的与关键字进行比较。若找到相等的,则查找成功;反之,失败。

更适合顺序存储结构和链式存储结构的查找表

2、折半查找

给定的序列是一个有序序列。

把序列分成左中右,左<中<右;

把给定值与中间值进行比较,确定下次查找是在左还是右;

继续,知道成功或者失败。

3、分块查找

顺序查找和二分法查找的折中。先分块,在块中顺序查找。

块间有序,块内无序。

二、动态查找

在查找的同时,会改变表的结构。

比如在查找的过程中同时插入查找表中不存在的数据,或者从查找表中删除已经存在的某个数据

1、二叉排序树

左子树非空,则左子树上所有节点值都小于根节点的值;

右子树非空,则右子树上所有节点值都大于根节点的值;

左右子树本身就是两棵二叉排序树。

2、平衡二叉树

或者一棵空树

或者树中任一节点左右子树深度相差不超过1

三、hash表

散列函数:一个把查找表中的关键字映射成该关键字对应的地址的函数。Hash(key)=Addr.

冲突:散列函数可能会把两个或者两个以上的不同关键字映射到同一地址,即为冲突。这些发生碰撞的不同关键字成为同义词。

散列表:根据关键字而直接进行访问的数据结构。

建立了关键字和存储地址之间的直接映射关系。

四、Hash函数:

hash函数的方法:

1、直接地址法

H(key)=a*key+b;

2、除留余数法

H(key)=key%p;

3、数字分析法

冲突解决发方法:

拉链法

开放地址法(线性探测、平方探测、再散列法)

hash表的查找效率取决于三个隐私:散列函数、处理冲突的方法和填装因子

填装因子即为一个表的填装程度,为表中记录数n/散列表长度m。

越大,则发生冲突的可能性越大



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值