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最基本的操作字典的方法
Apr 24 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
适合Python初学者的一些编程技巧
Feb 12 Python
使用TFRecord存取多个数据案例
Feb 17 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
python3将变量输入的简单实例
Aug 19 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
Python爬虫之Selenium实现键盘事件
Dec 04 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 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单件模式结合命令链模式使用说明
2008/09/07 PHP
destoon常用的安全设置概述
2014/06/21 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
读jQuery之三(构建选择器)
2011/06/11 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
Python实现CET查分的方法
2015/03/10 Python
简单了解python中对象的取反运算符
2019/07/01 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
2014年3.15团委活动总结
2014/03/16 职场文书
团干部培训方案
2014/06/03 职场文书
财务管理专业自荐书
2014/09/02 职场文书
2014年党务工作总结
2014/11/25 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
教你怎么用Python监控愉客行车程
2021/04/29 Python
Java线程的6种状态与生命周期
2022/05/11 Java/Android
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers