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实现文本文件合并
Dec 29 Python
简单实现python进度条脚本
Dec 18 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
Django drf请求模块源码解析
Jun 08 Python
一行Python命令实现批量加水印
Apr 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
对javascript和select部件的结合运用
2006/10/09 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
python collections模块的使用
2020/10/16 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
文明礼仪演讲稿
2014/05/12 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
旷工检讨书1000字
2015/01/01 职场文书
大学生求职自荐信范文
2015/03/04 职场文书