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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python使用BeautifulSoup分析网页信息的方法
Apr 04 Python
Python实现单词拼写检查
Apr 25 Python
Python ldap实现登录实例代码
Sep 30 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
Django学习笔记之为Model添加Action
Apr 30 Python
Django model update的多种用法介绍
Mar 28 Python
Python pip配置国内源的方法
Feb 14 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
python re的findall和finditer的区别详解
Nov 15 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编写大型网站问题集
2007/03/06 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
深入解读Python解析XML的几种方式
2016/02/16 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python的垃圾回收机制详解
2019/08/28 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
python 19个值得学习的编程技巧
2020/08/15 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
护士自我介绍信
2014/01/13 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
2015年信访工作总结
2015/04/07 职场文书
mysql如何能有效防止删库跑路
2021/10/05 MySQL