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网络编程示例(客户端与服务端)
Apr 24 Python
跟老齐学Python之永远强大的函数
Sep 14 Python
详解Python中的strftime()方法的使用
May 22 Python
Python六大开源框架对比
Oct 19 Python
python自动翻译实现方法
May 28 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
python 对字典按照value进行排序的方法
May 09 Python
python跳出双层for循环的解决方法
Jun 24 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
Feb 07 Python
Python Numpy之linspace用法说明
Apr 17 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php实现搜索类封装示例
2016/03/31 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Vue Router中应用中间件的方法
2020/08/06 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
Python中除法使用的注意事项
2014/08/21 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
先进集体获奖感言
2014/02/13 职场文书
安全检查汇报材料
2014/12/26 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL