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深入学习之装饰器
Aug 31 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
Python操作Excel插入删除行的方法
Dec 10 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
Python列表对象实现原理详解
Jul 01 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
Python 中的Sympy详细使用
Aug 07 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操作XML作为数据库的类
2010/12/19 PHP
php数组去重复数据示例
2014/02/25 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
Python学习小技巧之列表项的拼接
2017/05/20 Python
Python读取表格类型文件代码实例
2020/02/17 Python
Python进行统计建模
2020/08/10 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
受欢迎的大学生自我评价
2013/12/05 职场文书
股权转让协议书范本
2014/04/12 职场文书
快餐公司创业计划书
2014/04/29 职场文书
食品安全工作方案
2014/05/07 职场文书
经典团队口号
2014/06/06 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
小学元宵节活动总结
2015/02/06 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
公司年会主持词范文!
2019/05/07 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android