Python - 搜索算法

Python - 搜索算法 首页 / 数据结构入门教程 / Python - 搜索算法

当您将数据存储在不同的数据结构中时,搜索是非常基本的必要条件,最简单的方法是遍历数据结构中的每个元素,并将其与您要搜索的值匹配, 这称为线性搜索。它效率低下,很少使用,但是为此创建一个程序可以使无涯教程了解如何实现一些高级功能 - 搜索算法。

线性搜寻

在这种类型的搜索中,对所有元素进行逐个搜索。检查每个元素,如果找到匹配项,则返回该特定元素,否则继续搜索直到数据结构结束。

def linear_search(values, search_for):
    search_at=0
    search_res=False

# 将值与每个数据元素匹配
    while search_at < len(values) and search_res is False:
        if values[search_at] == search_for:
            search_res=True
        else:
            search_at=search_at + 1

    return search_res

l=[64, 34, 25, 12, 22, 11, 90]
print(linear_search(l, 12))
print(linear_search(l, 91))

执行以上代码后,将产生以下输出-

True
False

插值搜索

该搜索算法在所需值的探测位置上工作,为了使该算法正常工作,数据收集应采用排序形式并平均分配, 最初,探针位置是集合中最中间一项的位置,如果发生匹配,则返回该项的索引, 如果中间元素大于该元素,则再次在中间元素右侧的子数组中计算探针位置,否则,将在中间元素左侧的子数组中搜索该元素。该过程同样在子阵列上继续进行,直到子阵列的大小减小到零为止。

链接:https://www.learnfk.comhttps://www.learnfk.com/python-data-structure/python-searching-algorithms.html

来源:LearnFk无涯教程网

有一个特定的公式可以计算中间位置,该公式在下面的程序中显示。

无涯教程网

def intpolsearch(values,x ):
    idx0=0
    idxn=(len(values) - 1)

    while idx0 <= idxn and x >= values[idx0] and x <= values[idxn]:

# 找到中间点
	mid=idx0 +\
               int(((float(idxn - idx0)/( values[idxn] - values[idx0]))
                    * ( x - values[idx0])))

# 将中点的值与搜索值进行比较
        if values[mid] == x:
            return "Found "+str(x)+" at index "+str(mid)

        if values[mid] < x:
            idx0=mid + 1
    return "Searched element not in the list"


l=[2, 6, 11, 19, 27, 31, 45, 121]
print(intpolsearch(l, 2))

执行以上代码后,将产生以下输出-

Found 2 at index 0

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

高并发系统设计40问 -〔唐扬〕

后端技术面试 38 讲 -〔李智慧〕

系统性能调优必知必会 -〔陶辉〕

Django快速开发实战 -〔吕召刚〕

手机摄影 -〔@随你们去〕

体验设计案例课 -〔炒炒〕

说透数字化转型 -〔付晓岩〕

陈天 · Rust 编程第一课 -〔陈天〕

自动化测试高手课 -〔柳胜〕

好记忆不如烂笔头。留下您的足迹吧 :)