Python实现搜索算法的实例代码
作者:爱学习的小肥猪 发布时间:2023-08-09 14:24:59
标签:python,搜索,算法
将数据存储在不同的数据结构中时,搜索是非常基本的必需条件。最简单的方法是遍历数据结构中的每个元素,并将其与您正在搜索的值进行匹配。这就是所谓的线性搜索。它效率低下,很少使用,但为它创建一个程序给出了我们如何实现一些高级搜索算法的想法。
线性搜索
在这种类型的搜索中,逐个搜索所有值。每个值都会被检查,如果找到匹配项,那么返回该特定值,否则搜索将继续到数据结构的末尾。代码如下:
[Python] 纯文本查看
def linear_search(data, search_for):
"""线性搜索"""
search_at = 0
search_res = False
while search_at < len(data) and search_res is False:
if data[search_at] == search_for:
search_res = True
else:
search_at += 1
return search_res
lis = [5, 10, 7, 35, 12, 26, 41]
print(linear_search(lis, 12))
print(linear_search(lis, 6))
插值搜索
该搜索算法适用于所需值的探测位置。为了使该算法正常工作,数据收集应该以排序形式并平均分布。最初,探针位置是集合中最大项目的位置。如果匹配发生,则返回项目的索引。如果中间项目大于项目,则再次在中间项目右侧的子数组中计算探针位置。否则,该项目将在中间项目左侧的子数组中搜索。这个过程在子数组上继续,直到子数组的大小减小到零。代码如下:
[Python] 纯文本查看
def insert_search(data,x):
"""插值搜索"""
idx0 = 0
idxn = (len(data) - 1)
while idx0 <= idxn and x >= data[idx0] and x <= data[idxn]:
mid = idx0 +int(((float(idxn - idx0)/(data[idxn] - data[idx0])) * (x - data[idx0])))
if data[mid] == x:
return "在下标为"+str(mid) + "的位置找到了" + str(x)
if data[mid] < x:
idx0 = mid + 1
return "没有搜索到" + str(x)
lis = [2, 6, 11, 19, 27, 31, 45, 121]
print(insert_search(lis, 31))
print(insert_search(lis, 3))
总结
以上所述是小编给大家介绍的Python实现搜索算法的实例代码网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/heima201907/article/details/103777501


猜你喜欢
- 用uniapp开发APP时,为了开发方便,经常是H5开发好,然后再弄APP的兼容性问题。所以可能会涉及到跨域,此时也可以让后端同学帮忙,但是
- 今天设计models时,用到了choice这个属性,用来限制用户做出选择的范围。比如说性别的选择(男或女)。class User(Abstr
- 问题:1. 访问 ASP 页面时,出现以下错误:Active Server Pages 错误 'ASP 0201'错误无效的
- 前言去年在做golangserver的时候,内部比较头疼的就是在线服务发布的时候,大量用户的请求在发布时候会被重连,在那时候也想了n多的方法
- 下面主要通过代码给大家展示下javascript记住用户名和登录密码,具体代码内容请看下文。第一种方式:CONTENT  
- 代理服务原理很简单,就拿浏览器与web服务器来说。无非是A浏览器发request给B代理,B代理再把request把送给C web服务,然后
- 统计表中常常以本年累计、上年同期(累计)、当期(例如当月)完成、上月完成为统计数据,并进行同比、环比分析。如下月报统计表所示样例,本文将使用
- 1、初始化在这章,你将学到Flask应用程序的不同部分。同时,你将编写和运行你的第一个Flask web应用程序。所有的Flask应用程序都
- 本文从简单的例子入手,从打包文件去分析以下三个问题:webpack打包文件是怎样的?如何做到兼容各大模块化方案的?webpack3带来的新特
- 一个JavaScript代码编写的图片展示特效,效果很棒。效果图:演示:<!DOCTYPE HTML PUBLIC "-//
- 前两天看的时候,所用的歌曲地址加密方式已变更。将以前的发出来供大家赏玩。解密函数是从flash里面反编译出来的,加密函数是自己根据解密函数写
- 在IE7还不支持counter 和increment 属性之前,我从来没有用过它们,也从来没有使用过:before 伪元素和content
- ghhs("nav01","li"); // 鼠标经过时变色 ghh
- 先去下载一个叫SWFToImage.dll的东西 再建立一个bat文件,并运行: COPY SWFToImage.dll %windir%\
- 1. 资料1) Protobuf 开发文档https://protobuf.dev/2) protobuf安装指南https://grpc.
- 首先,先确认一下你的字段值是不是乱码,如果是,按照以下方法:我的字段值是来自于一个geojson字符串,我在对它解析时做了如下处理:prop
- 阅读上一篇:网马解密大讲堂——网马解密初级篇今天主要讲解的内容是Freshow工具的使用方法,工欲善其事,必先利其器,首先要学会如何使用解密
- QueueQueue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生
- 在php中使用Xajax能够即时与数据库发生交互带给用户更好的体验主要的应用有网页的即时、不刷新的登录系统也可以利用于注册系统中即时验证用户
- 在 Go 语言中,我们可以定义空结构体(empty struct),即没有任何成员变量的结构体,使用关键字 struct{} 来表示。这种结