第七章:查找

本文介绍了数据结构中的查找技术,包括顺序查找、折半查找的基本概念和实现。顺序查找通过遍历查找表来定位元素,而折半查找利用二分法提高查找效率。此外,还涉及查找表的查找长度和平均查找长度(ASL)等关键指标。通过对不同查找方法的分析,有助于理解数据结构在查找操作中的性能差异。

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

7.1 基本概念

查找:在数据集合中寻找满足某种条件的数据元素的过程
查找表(查找结构):用于查找的数据集合称为查找表,它由同一类型的数据元素(或记录)组成
关键字:数据元素中唯一标识该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的

查找表常见操作:
①查找符合条件的数据元素②插入删除某个数据元素
只需进行操作①——静态查找表
也要进行操作②——动态查找表

查找长度:在查找运算中,需要对比关键字的次数
平均查找长度(ASL):所有查找过程中进行关键字的比较次数的平均值

7.2 顺序查找

typedef struct{//查找表数据结构
	ElemType *elem;//动态数组基址
	int TableLen;//表的长度
}SSTable;
//一般顺序查找
int Search_Seq(SSTable ST,ElemType key){
	int i;
	for(i=0;i<ST.TableLen&&ST.elem[i]!=key;++i);//查找成功返回数组下标,失败返回-1
	return i==ST.TableLen?-1:i;
}
//哨兵顺序查找
int Search_Seq(SSTable ST,ElemType key){
	ST.elem[0]=key;//哨兵
	int i;
	for(i=ST.TableLen;ST.elem[i]!=key;--i);//从后往前找
	return i;//成功返回下标,失败返回0
}

查找效率分析:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.3 折半查找

//折半查找
int Binary_Search(SSTable L,ElemType key){
	int low=0,high=L.TableLen-1,mid;
	while(low<=high){
		mid=(low+high)/2;//取中间位置
		if(L.elem[mid]==key)
			return mid;//查找成功则返回所在位置
		else if(L.elem[mid]>key)
			high=mid-1;//从前半部分继续查找
		else
			low=mid+1;//从后半部分继续查找
	}
	return -1;//查找失败返回-1
}

小结:
在这里插入图片描述

7.4 分块查找

在这里插入图片描述

7.5 B树和B+树

7.6 散列查找

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终究成为社畜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值