150day(搜索问题和查找算法)

本文介绍了文件的基本组成,包括记录、字段与关键字的概念,并详细阐述了两种基本的查找算法——顺序查找与折半查找。文章还分析了这两种查找算法的平均检索长度,并通过实例解释了如何使用这些算法。

《2018年3月9日》【连续150天】

标题:搜索问题和查找算法;

内容:

文件(File):若干条结构相同的记录构成。

记录:由若干相关字段取值构成的整体;

字段(Field):是最小的不可分割的数据单位,每个字段都有一个特定的数据类型;

关键字(Keyword):就是记录中的一个字段,用它来标记和控制一条记录;

  1.主关键字:能够唯一的标记和控制一条记录的关键字;

  2.其他的称为辅关键字(次关键字);

a.顺序查找:
从最后一条记录开始,按照记录的逻辑次序,根据给定的关键字,逐一查找,找到即返回相应的记录;

线性表顺序查找算法:
在数组前加一个哨兵,其K值就是我们要查找的K,

例如,在一个数组中查找,共N个记录,从1~N,则找到时,返回其序号,找不到时,返回0;

这样,当写函数时,就不需要写记录序号是否大于0的比较

 

while(i>0&&a[i]!=k)
{i--;}


节省了一半的时间;

 

查找成功的平均检索长度:ASL:(n+1)/2;

加上查找失败的情况(与成功概率相同):(3/4)(n+1);

b.折半查找:如果文件中的记录的关键字是有序的,就可以采用折半查找(比中间值就行)

假设在0~10中查找,此为折半查找树;

 

ASL=log(n+1)-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值