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 输出一个两行字符的变量
Feb 05 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Python 含参构造函数实例详解
May 25 Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
python如何实现int函数的方法示例
Feb 19 Python
mac下如何将python2.7改为python3
Jul 13 Python
python 异或加密字符串的实例
Oct 14 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
基于python实现把json数据转换成Excel表格
May 07 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
Python如何在main中调用函数内的函数方式
Jun 01 Python
python处理写入数据代码讲解
Oct 22 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 魔兽争霸
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php使用PDO方法详解
2014/12/27 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
JavaScript 语言的递归编程
2010/05/18 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
jquery密码强度校验
2015/12/02 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
linux 下实现python多版本安装实践
2014/11/18 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
pycharm新建一个python工程步骤
2019/07/16 Python
django model通过字典更新数据实例
2020/04/01 Python
深入分析python 排序
2020/08/24 Python
工商企业管理实习自我鉴定
2013/12/04 职场文书
一年级数学教学反思
2014/02/01 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
公司年会策划方案
2014/05/17 职场文书
党员群众路线承诺书
2014/05/20 职场文书
红色电影观后感
2015/06/18 职场文书
学风建设主题班会
2015/08/17 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS