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 相关文章推荐
python rsa 加密解密
Mar 20 Python
matplotlib绘制动画代码示例
Jan 02 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
python实现年会抽奖程序
Jan 22 Python
详解python-图像处理(映射变换)
Mar 22 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
python GUI计算器的实现
Oct 09 Python
Python headers请求头如何实现快速添加
Nov 03 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
php 执行系统命令的方法
2009/07/07 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
php实现的双色球算法示例
2017/06/20 PHP
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
python使用多线程不断刷新网页的方法
2015/03/31 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
快速入门python学习笔记
2017/12/06 Python
Python对象与引用的介绍
2019/01/24 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
通过实例解析Python调用json模块
2019/12/11 Python
Python如何访问字符串中的值
2020/02/09 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
Html5自定义字体解决方法
2019/10/09 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
党员组织关系介绍信
2014/02/13 职场文书
合同意向书范本
2014/07/30 职场文书
优秀班主任材料
2014/12/16 职场文书
情况说明书怎么写
2015/10/08 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL