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中文乱码的解决方法
Nov 04 Python
跟老齐学Python之有容乃大的list(3)
Sep 15 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
Python 文件操作的详解及实例
Sep 18 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
python分块读取大数据,避免内存不足的方法
Dec 10 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 Python
python 类之间的参数传递方式
Dec 20 Python
py-charm延长试用期限实例
Dec 22 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
Python数据分析入门之数据读取与存储
May 13 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/04/09 欧美动漫
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
文本框回车提交与禁止提交示例
2013/09/27 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
python fabric实现远程部署
2017/01/05 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Django 请求Request的具体使用方法
2019/11/11 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
县优秀教师事迹材料
2014/01/31 职场文书
微笑服务演讲稿
2014/05/13 职场文书
活动总结格式
2014/08/30 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
先进工作者事迹材料
2014/12/23 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
单位工资证明范本
2015/06/12 职场文书
python实现自动化群控的步骤
2021/04/11 Python