【经典算法1——顺序查找】

活动地址:CSDN21天学习挑战赛

经典算法1——顺序查找

一、什么是查找?

根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或记录。
若查找表中存在这样一个记录,则称“查找成功”。查找结果给出整个记录的信息,或者指示该记录在查找表中的位置;否则称“查找不成功”。查找结果给出“空记录”或“空指针”。

二、什么是顺序查找?

顺序查找法又称为线性查找法,它的方法是将数据一项一项的和要查找的数据按顺序进行比较。其优点是文件在查找前不需要进行任何处理,缺点是查找速度过慢。在最好的情况下就是一次就查找到数据;最差则需要进行n次比较。

三、实例分析

1.例题题目

假设给定一组数组a[10]={21,37,88,19,92,05,64,56,80,75,13},关键字e为64,问需要比较多少次能查找到e。

2.解决题目的代码

int main(){
	int a[11]={21,37,88,19,92,5,64,56,80,75,13};
	int e=64,k=0;
	for(int i=11;a[i]!=e;i--);//从后往前找
	if(i==0){//i为0时,有可能找不到
		if(a[i]==e) printf("比较次数为%d\n",11-i);
		else printf("查找失败!");
}
	else printf("比较次数为%d\n",11-i);
return 0;
}

3.运行结果展示

在这里插入图片描述

四、时间复杂度与空间复杂度分析

1.时间复杂度

最好的情况是要查找的关键字正好在第一项,此时时间复杂度O(1),最坏的情况是要查找的关键字在最后一项,假设n为表长,则此时的时间复杂度为O(n).
Pi为查找表中第i个记录的概率,等概率的情况下Pi=1/n,其平均时间复杂程度为nP1+(n-1)P2+…+2Pn-1+Pn=1/n*[(n+1)*n]/2=(n+1)/2;因为其系数1/2和+1可以忽略,所以其时间复杂度为O(n).

2空间复杂度

由于此算法原有的元素集合为数组,算法不会改变原有的元素集合,因此空间复杂度为O(1).

五、顺序查找优缺点分析

1.优点

算法简单而且使用面广,对表中记录的存储没有任何要求,顺序存储和链接存储均可,对表中记录的有序性也没有要求,无论记录是否按关键码有序均可。

2.缺点

时间复杂度较大,特别不适用于表长较大的查找表,效率较低。

六、说明

通过参加21天学习挑战赛,我第一次在csdn上发文章,自知知识水平有限,如有不当之处还望批评斧正。
参考文章一头小山猪的一文学懂经典算法系列之:顺序查找(附讲解视频)

Aotr.x的顺序查找

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值