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中的多进程、多线程、协程
Jun 22 Python
python 计算文件的md5值实例
Jan 13 Python
Python递归函数定义与用法示例
Jun 02 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
wxPython色环电阻计算器
Nov 18 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
用Python绘制漫步图实例讲解
Feb 26 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Python实现打包成库供别的模块调用
Jul 13 Python
python使用shell脚本创建kafka连接器
Apr 29 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小偷相关截取函数备忘
2010/11/28 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
原生js生成图片验证码
2020/10/11 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
详解django.contirb.auth-认证
2018/07/16 Python
python3 爬取图片的实例代码
2018/11/06 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
django rest framework serializers序列化实例
2020/05/13 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
锐步英国官网:Reebok英国
2019/11/29 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
应届生骨科医生求职信
2013/10/31 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
学习保证书
2015/01/17 职场文书
鼋头渚导游词
2015/02/05 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
大学生党课感想
2015/08/11 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android