21天经典算法学习-顺序查找


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


顺序查找是什么?

查找也被称为检索,算法的主要目的是在某种数据结构中找出满足给定条件的元素(以等值匹配为例)。如果找到满足条件的元素则代表查找成功,否则查找失败。在进行查找时,对于不同的数据结构以及元素集合状态,会有相对匹配的算法,在使用时也需要注意算法的前置条件。在元素查找相关文章中只讨论数据元素只有一个数据项的情况,即关键字(key)就是对应数据元素的值,对应到具体的数据结构,可以理解为一维数组。

顺序查找也称线性查找,是最简单的查找方法。思路也很简单,从数组的一边开始,逐个进行元素的比较,如果与给定的待查找元素相同,则查找成功;如果整个扫描结束后,仍未找到相匹配的元素,则查找失败。

描述

输入:n个数的序列,通常直接存放在数组中,可以是任何顺序。需要查找的关键字key。

输出:查找成功返回元素所在位置的编号,查找失败返回-1。

算法说明

从下标0开始挨个查找元素对比key,直到查找到元素Key返回当前元素位置,若所有元素扫描一遍都没查找到则返回-1。

实现(使用python实现)

li=[11,34,20,10,12,35,41,32,43,14]
key=41

for i in range(0,len(li)):
    if li[i]==key:
        return i

return -1

输出

​6

时间复杂度 

最坏的情况:遍历整个列表都未查询到key,此时循环被完整执行,循环执行次数与n相关,所以时间复杂度为O(n)。

最好的情况:第一次就查找到元素,此时时间复杂度为O(1)。

平均情况:综上情况顺序查找的时间复杂度为O(n)。

空间复杂度 

 算法未改变原有列表,只需要一个额外的变量控制索引变化,所以空间复杂度为O(1)。

总结 

顺序查找时间复杂度为O(n),属于查找中较慢的算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值