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求解物理学中的双弹簧质能系统详解
Sep 29 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
Python程序包的构建和发布过程示例详解
Jun 09 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
Python 如何实现文件自动去重
Jun 02 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
杏林同学录(四)
2006/10/09 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
Java工程师面试集锦之Spring框架
2013/06/16 面试题
找工作最新求职信
2013/12/22 职场文书
初一英语教学反思
2014/01/11 职场文书
企业年度评优方案
2014/06/02 职场文书
服务口号大全
2014/06/11 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
计划生育工作总结2015
2015/04/03 职场文书
行政撤诉申请书
2015/05/18 职场文书
创业计划书之美容店
2019/09/16 职场文书