【算法实践】一天路走到黑--手把手带你实现坚持不懈的线性查找

举报
迷彩 发表于 2023/05/24 15:23:19 2023/05/24
【摘要】 前言什么是线性查找?线性查找又称为顺序查找,它是最基础的一种查找算法.线性查找的做法非常简单,简单到见名知意:在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。线性查找是从第一个记录开始,与记录的关键字逐个比较,直到和给定的关键字相等,则就是查找成功,如果比较的结果与文件中所有记录的关键字都不相等,则查找失败,如果查找池是某种类型的一个表,比如一个数组,简单的查找...

前言

什么是线性查找?

线性查找又称为顺序查找,它是最基础的一种查找算法.线性查找的做法非常简单,简单到见名知意:在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。线性查找是从第一个记录开始,与记录的关键字逐个比较,直到和给定的关键字相等,则就是查找成功,如果比较的结果与文件中所有记录的关键字都不相等,则查找失败,如果查找池是某种类型的一个表,比如一个数组,简单的查找方法是从表头开始,一次将每一个值与目标元素进行比较,最后,或者查找到目标,或者达到表尾,而目标不存在于组中,这个方法称为线性查找。


举个现实中的例子:比如刚开学,小北的爸妈来学校找他,小北爸妈不知道小北住那个宿舍,这时他们找宿管阿姨,但是由于刚开学没来得及登记入住信息,宿管也不知道小北具体住哪个宿舍,只知道住哪个楼层,这样宿管阿姨就只能带着小北的爸妈第一间到最后一间逐个宿舍问,直到找到小北为止,这就是线性查找


因为线性查找需要从头开始不断地按顺序检查数据,因此在数据量大且目标数据靠后的情况,或者数据不存在时,比较次数会更多,且更耗时.线性查找的平均查找长度和表长度n成线性关系,若数据量为n,那么线性查找的平均次数为: n/2;时间复杂度为O(n),当n较大时线性查找的效率较低,不过的它优点在于简单且容易实现


线性查找的具体流程

  1. 输入查找的元素

  2. 判断待查找的元素是否存在于数组中

  3. 如果存在于数组中,则返回该元素的索引,如果不存在,则返回-1

  4. 如果返回索引,则输出该元素的索引位置,否则,则输出"没有找到对应元素"

具体流程如下图:

操作步骤:

比如有[1,2,3,4,5,6,7,8,9,10],10个元素的数组,我要从中找到9

注:数组可以是无序的,这里只是为了演示方便!


代码实现

线性查找的代码极其简单:

def LinearSearch(arr, n, x):
    for i in range(0, n):
        if (arr[i] == x):
            return i
    return -1

验证算法:

data = [15, 18, 2, 14, 26, 13, 19,50, 23, 25, 88, 66, 45, 78, 10, 23, 45]
x = int(input("请输入你需要查找的元素:"))
n = len(data)
result = LinearSearch(data, n, x)
if (result == -1):
    print("没有找到对应元素")
else:
    print("元素在数组中的索引为:", result)

执行结果如下:



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。