青岛大学_王卓老师【数据结构与算法】Week02_09_线性表的顺序表示和实现4_学习笔记

本文是个人笔记,仅用于学习分享,素材来自青岛大学王卓老师的教学视频,如有侵权,请留言作删文处理。

王卓老师 数据结构与算法第 02 周第 09 个原视频链接

📚 Week02_09_线性表的顺序表示和实现4–查找算法

📚 顺序表上的查找操作

按值查找

例如:在图书表中,按照给定书号进行查找,确定是否存在该图书。如果存在,输出是第几个元素;如果不存在,输出0。
在这里插入图片描述

【算法02.07】顺序表的查找

🔸 在线性表 L 中查找与指定值 e 相同的数据元素的位置

🔸 从表的一端开始,逐个进行记录的关键字和给定值得比较。找到,返回该元素的位置序号;未找到,返回0。

实现方式1

// 在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)
int LocateElem(SqList L,  ElemType e)
{
    for(i=0; i<L.length; i++)
        // 查找成功,返回序号
        if(L.elem[i] == e)
            return (i+1);
    // 查找失败,返回0
    return 0;
}

实现方式2

// 在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)
int LocateElem(SqList L, ElemType e)
{
    int i = 0;
    while(i < L.length&& L.elem[i] != e)
        i++;
    // 查找成功,返回序号
    if(i < L.length)
        return (i+1);
    // 查找失败,返回0
    return 0;
}
📚 顺序表的查找算法分析

🔸 因为查找算法的基本操作为:将记录的关键字同给定值进行比较

基本操作

L.elem[i] == e

在这里插入图片描述

比较次数:e = a,1次;e = b,2次;e = c,3次;……;e = g,7次。

平均比较次数:(1 + 2 + 3 + 4 + 5 + 6 + 7) / 7 = 4次。

平均查找长度 ASL(Average Search Length)

为确定记录在表中的位置,需要与给定值进行比较的关键字的个数的期望值叫做查找算法的平均查找长度。

在这里插入图片描述

顺序表的平均查找长度:
在这里插入图片描述

假设每个记录的查找概率相等
在这里插入图片描述
则有:
在这里插入图片描述

顺序表的查找算法的时间复杂度:O(n)

学习笔记最后有微信公众号:惟CPP,欢迎关注,一起交流学习进步~

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值