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 31 Python
python中的set实现不重复的排序原理
Jan 24 Python
Python基于property实现类的特性操作示例
Jun 15 Python
python递归函数绘制分形树的方法
Jun 22 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
python如何发布自已pip项目的方法步骤
Oct 09 Python
python多线程抽象编程模型详解
Mar 20 Python
python如何实现异步调用函数执行
Jul 08 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
Apr 01 Python
python中JWT用户认证的实现
May 18 Python
Pymysql实现往表中插入数据过程解析
Jun 02 Python
Python环境使用OpenCV检测人脸实现教程
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
3种平台下安装php4经验点滴
2006/10/09 PHP
php 分页类 扩展代码
2009/06/11 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
解析js如何获取css样式
2016/12/11 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
详解用python计算阶乘的几种方法
2019/08/14 Python
Python如何输出百分比
2020/07/31 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
公积金转移接收函
2014/01/11 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
商务经理岗位职责
2014/08/03 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang
php去除deprecated的实例方法
2021/11/17 PHP