Python实现搜索算法的实例代码


Posted in Python onJanuary 02, 2020

将数据存储在不同的数据结构中时,搜索是非常基本的必需条件。最简单的方法是遍历数据结构中的每个元素,并将其与您正在搜索的值进行匹配。这就是所谓的线性搜索。它效率低下,很少使用,但为它创建一个程序给出了我们如何实现一些高级搜索算法的想法。

线性搜索

在这种类型的搜索中,逐个搜索所有值。每个值都会被检查,如果找到匹配项,那么返回该特定值,否则搜索将继续到数据结构的末尾。代码如下:

[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实现搜索算法的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python使用正则表达式实现文本替换的方法
Apr 18 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
Python中按值来获取指定的键
Mar 04 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
python3实现高效的端口扫描
Aug 31 Python
python pycharm的安装及其使用
Oct 11 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
Python ORM框架Peewee用法详解
Apr 29 Python
python如何求100以内的素数
May 27 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 Python
解决pytorch读取自制数据集出现过的问题
May 31 Python
python 实现从高分辨图像上抠取图像块
Jan 02 #Python
python base64库给用户名或密码加密的流程
Jan 02 #Python
python文件处理fileinput使用方法详解
Jan 02 #Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 #Python
Pytorch的mean和std调查实例
Jan 02 #Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 #Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 #Python
You might like
php创建session的方法实例详解
2015/01/27 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
angular2模块和共享模块详解
2018/04/08 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
python返回昨天日期的方法
2015/05/13 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
python编程嵌套函数实例代码
2018/02/11 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
python如何生成网页验证码
2018/07/28 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
python导入模块交叉引用的方法
2019/01/19 Python
使用python远程操作linux过程解析
2019/12/04 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python读取xml文件方法解析
2020/08/04 Python
实习教师自我鉴定
2013/09/27 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
交通安全寄语大全
2014/04/08 职场文书
《海底世界》教学反思
2014/04/16 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
教师年度考核个人总结
2015/02/12 职场文书
国庆节主题班会
2015/08/15 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫