python搜索算法原理及实例讲解


Posted in Python onNovember 18, 2020

一般我们在解决问题时候,经常能碰到好几种解决方式,总归是有最优,还有最不推荐的选择的,针对搜索算法也一样,因为能实现的方式也有很多个,因此,不知道大家在什么场景里使用这些算法,反正小编都把这些算法整理出来了,供大家选择,另外针对个人理解,大家也可以参考哪个更好使用哦~

搜索算法

线性搜索

按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。是最简单的一种搜索算法。

python搜索算法原理及实例讲解

二分搜索算法

这种搜索算法每一次比较都使搜索范围缩小一半。

插值搜索算法

是根据要查找的关键字key与顺序表中最大、最小记录的关键字比较后的查找方法,它假设输入数组是线性增加的。

跳跃搜索算法

需要通过固定的跳跃间隔,这样它相比二分查找效率提高了很多。

快速选择

快速选择一般是以原地算法的方式实现,除了选出第k小的元素,数据也得到了部分地排序。

禁忌搜索

是一种现代启发式算法,一个用来跳脱局部最优解的搜索方法。

关于算法的知识点扩展:

线性搜索

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))

插值搜索

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 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
Python常见工厂函数用法示例
Mar 21 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
python生成n个元素的全组合方法
Nov 13 Python
python实现狄克斯特拉算法
Jan 17 Python
python解析含有重复key的json方法
Jan 22 Python
用python做游戏的细节详解
Jun 25 Python
python多线程分块读取文件
Aug 29 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
python绘制无向图度分布曲线示例
Nov 22 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
python的数学算法函数及公式用法
Nov 18 #Python
python3中TQDM库安装及使用详解
Nov 18 #Python
Python3中FuzzyWuzzy库实例用法
Nov 18 #Python
scrapy redis配置文件setting参数详解
Nov 18 #Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 #Python
详解Scrapy Redis入门实战
Nov 18 #Python
如何在scrapy中集成selenium爬取网页的方法
Nov 18 #Python
You might like
php实现的click captcha点击验证码类实例
2014/09/23 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
在Django中创建动态视图的教程
2015/07/15 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
如何用Python合并lmdb文件
2018/07/02 Python
python的turtle库使用详解
2019/05/10 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
客户经理岗位职责
2013/12/08 职场文书
检讨书大全
2015/01/27 职场文书
欠款起诉书范文
2015/05/19 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
python计算列表元素与乘积详情
2022/08/05 Python