二叉树 查找失败 asl_划重点!轻松搞定查找算法

本文介绍了三种查找方法:顺序查找、折半查找和分块查找。通过实例分析了不同查找算法的平均查找长度(ASL),强调了折半查找在有序表中的效率优势。同时,提供了关于折半查找查找成功和失败的平均查找长度的试题解析,并指出在特定情况下,顺序查找可能更快。
摘要由CSDN通过智能技术生成
知识框架 36bee8c4cb02bfbfc50881053518deb5.png 知识点详解

No.1

顺序查找

Q:什么是顺序查找呢? A:顺序查找的原理很简单,就是遍历整个列表,逐个进行比较,若某个关键字和给定值相等,则查找成功。如果直到最后一个记录,其关键字和给定值比较都不等时,则查找失败。 顺序查找一般分为两种:对一般的无序线性表的顺序查找和对按关键字有序的顺序表的顺序查找。下面,分别来讨论这两种顺序查找方法。 4b87f1dd-5f34-eb11-8da9-e4434bdf6706.svg 对一般无序线性表的顺序查找『实现算法』
typedef struct{
      //查找表的数据结构   ElemType *elem; //元素存储空间基址,建表时按实际长度分配,0号单元留空   int TableLen; //表的长度 }SSTable; int Search_Seq(SSTable ST , ElemType key) {   ST.elem[0]=key; //哨兵  for(i =ST . TableLen;ST.elem[i) !=key ; --i); //从后往前找   return i; //若表中不存在关键字为key的元素,则找到i为0时退出 for 循环}
上述代码中有一个“哨兵”。通俗来讲,设置哨兵是为了在循环查找时数组不会越界(不管有没有找到,当i=0时必定会退出循环)。设置哨兵也可以使程序不许要多余的判断,从而达到提高程序效率的目的。

查找过程:查找元素(Key):1

6d062652a210b72b907c23e0416152b6.png

f19ea5de7b42738a1b36fa63a5140e66.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值