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 字符串格式化代码
Mar 17 Python
使用Python进行稳定可靠的文件操作详解
Dec 31 Python
python数据结构树和二叉树简介
Apr 29 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
pandas重新生成索引的方法
Nov 06 Python
python中时间模块的基本使用教程
May 14 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
opencv 图像加法与图像融合的实现代码
Jul 08 Python
Python实现壁纸下载与轮换
Oct 19 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下获取客户端ip地址的函数
2010/03/15 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
深入探究node之Transform
2017/07/20 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
Javascript模块化机制实现原理详解
2020/04/02 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python设计模式之代理模式实例
2014/04/26 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Django自定义用户认证示例详解
2018/03/14 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
Python time库基本使用方法分析
2019/12/13 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
用python进行视频剪辑
2020/11/02 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
再婚婚前财产协议书范本
2014/10/19 职场文书
js之ajax文件上传
2021/05/13 Javascript
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL