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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
python使用str &amp; repr转换字符串
Oct 13 Python
python xml解析实例详解
Nov 14 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
python 读入多行数据的实例
Apr 19 Python
python os.path模块常用方法实例详解
Sep 16 Python
python项目对接钉钉SDK的实现
Jul 15 Python
python 画出使用分类器得到的决策边界
Aug 21 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
python脚本第一行如何写
Aug 30 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下打开URL地址的几种方法小结
2010/05/16 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
JS 文件大小判断的实现代码
2010/04/07 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
js闭包的用途详解
2014/11/09 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
JS实现星星海特效
2019/12/24 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
销售代表求职自荐信
2013/10/01 职场文书
给校长的一封建议书
2014/03/12 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
优秀校长事迹材料
2014/12/24 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
TS 类型兼容教程示例详解
2022/09/23 Javascript