Python数据结构与算法(18)---检索算法

简介: Python数据结构与算法(18)---检索算法

检索算法


数据结构的排序算法,到17篇归并排序就彻底讲解完成。从今天开始,我们将进入全新的数据结构知识,它的名字叫查找算法,也叫检索算法。


检索算法又分为排序检索与非排序检索。排序检索顾名思义就是先排序在进行查找,在数据库的查找中,我们往往都是这么做的。当然非排序检索也存在,只不过效率非常低。


检索算法包括线性查找、二分查找、插值查找、斐波拉契查找、分块查找、哈希查找以及回溯查找7个算法。所以,从18到24篇都是检索算法的内容知识。


下面,我们来介绍今天第1个要讲解的查找算法:线性查找。


线性查找


线性查找,又名Linear Search,顾名思义就是一种顺序的查找方算法,也是所有查找算法中最简单的一个算法。


其具体的原理:从第1个元素开始依次查找比较,若查找成功,返回其元素的索引;若查找失败,则返回查询无果。


当然,线性查找即可以从数列左边开始,也可以从数列右边开始。同时,它的原始数据既可以是排序好的列表,也可以是非排序列表。


图解线性查找

还是与前面的排序算法一样,我们也将查找算法用图解的方式给大家一一展示出来,这样更方便初学者的理解与学习,具体原理图解图下:


如上图所示,我们在该列表中查询元素等于3的索引位置。这里,我们从左边i=0开始查找,如果查找成功,则返回对应的索引位置。


实战:线性查找

因为线性查找太过于简单,我们这里实现2中线性查找,一种是从左边开始查找,一种是从右边开始查找。具体示例如下:


# 从左线性查找
def lef_linear_search(my_list, num):
    n = len(my_list)
    i = 0
    while i < n:
        if my_list[i] == num:
            return i
        i += 1
    return "None"
# 从右线性查找
def right_linear_search(my_list, num):
    n = len(my_list)
    i = n - 1
    while i >= 0:
        if my_list[i] == num:
            return i
        i -= 1
    return "None"
if __name__ == "__main__":
    my_list = [8, 0, 4, 3, 2, 1]
    print("线性查找的原始数列:", my_list)
    print("从左边开始线性查找:", lef_linear_search(my_list, 3))
    print("从右边开始线性查找:", lef_linear_search(my_list, 3))


运行之后,效果如下:


相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
111 55
|
21天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
124 67
|
21天前
|
存储 搜索推荐 Python
用 Python 实现快速排序算法。
快速排序的平均时间复杂度为$O(nlogn)$,空间复杂度为$O(logn)$。它在大多数情况下表现良好,但在某些特殊情况下可能会退化为最坏情况,时间复杂度为$O(n^2)$。你可以根据实际需求对代码进行调整和修改,或者尝试使用其他优化策略来提高快速排序的性能
115 61
|
15天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
93 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
21天前
|
存储 开发者 Python
Python 中的数据结构与其他编程语言数据结构的区别
不同编程语言都有其设计理念和应用场景,开发者需要根据具体需求和语言特点来选择合适的数据结构
|
21天前
|
存储 开发者 索引
Python 中常见的数据结构
这些数据结构各有特点和适用场景,在不同的编程任务中发挥着重要作用。开发者需要根据具体需求选择合适的数据结构,以提高程序的效率和性能
|
21天前
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
|
21天前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
15天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。