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 算法 排序实现快速排序
Jun 05 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
Python用模块pytz来转换时区
Aug 19 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
12个步骤教你理解Python装饰器
Jul 01 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
pandas数据拼接的实现示例
Apr 16 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
详解python变量与数据类型
Aug 25 Python
python中super()函数的理解与基本使用
Aug 30 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
Vue.js用法详解
2017/11/13 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
python多线程编程中的join函数使用心得
2014/09/02 Python
python中as用法实例分析
2015/04/30 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
专业实习自我鉴定
2013/10/29 职场文书
参观监狱心得体会
2014/01/02 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
人事局接收函
2015/01/30 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js