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实现自动登录人人网并访问最近来访者实例
Sep 26 Python
Python实现的rsa加密算法详解
Jan 24 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
python的concat等多种用法详解
Nov 28 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
Python autoescape标签用法解析
Jan 17 Python
Python 识别12306图片验证码物品的实现示例
Jan 20 Python
django序列化时使用外键的真实值操作
Jul 15 Python
基于python实现操作redis及消息队列
Aug 27 Python
python中xlrd模块的使用详解
Feb 01 Python
Python中Permission denied的解决方案
Apr 02 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 模拟$_PUT实现代码
2010/03/15 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
js中replace的用法总结
2013/12/27 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
python实现进程间通信简单实例
2014/07/23 Python
理解Python中的类与实例
2015/04/27 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Python的argparse库使用详解
2018/10/09 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
活动总结报告范文
2014/05/04 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
班委竞选稿范文
2015/11/21 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS