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中最大最小赋值小技巧(分享)
Dec 23 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
Python根据成绩分析系统浅析
Feb 11 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
简单了解python关系(比较)运算符
Jul 08 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
详解Python3 pandas.merge用法
Sep 05 Python
python默认参数调用方法解析
Feb 09 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
python实现小程序推送页面收录脚本
Apr 20 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 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中Date()时间日期函数的使用方法小结
2011/04/20 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python数据结构之Array用法实例
2014/10/09 Python
Python时间获取及转换知识汇总
2017/01/11 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
微信小程序python用户认证的实现
2019/07/29 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
RetroStage德国:复古服装
2019/02/03 全球购物
护理实习自我鉴定
2013/12/14 职场文书
建筑人员岗位职责
2013/12/25 职场文书
村干部承诺书
2014/03/28 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书