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 25 Python
使用python开发vim插件及心得分享
Nov 04 Python
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
解决Python传递中文参数的问题
Aug 04 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
python正则表达式面试题解答
Apr 28 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
Python列表切片常用操作实例解析
Mar 10 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Python爬取某平台短视频的方法
Feb 08 Python
python获取带有返回值的多线程
May 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
PHP的栏目导航程序
2006/10/09 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
python数组循环处理方法
2019/08/26 Python
python——全排列数的生成方式
2020/02/26 Python
python实现简单的tcp 文件下载
2020/09/16 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
美国时尚在线:Showpo
2017/09/08 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
一位农村小子的自荐信
2014/04/07 职场文书
建筑投标担保书
2014/05/20 职场文书
调研汇报材料范文
2014/08/17 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
警察群众路线整改措施
2014/09/26 职场文书
解除同居协议书
2015/01/29 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
公务员保密工作承诺书
2015/05/04 职场文书