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 02 Python
简析Python的闭包和装饰器
Feb 26 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
Django基础知识与基本应用入门教程
Jul 20 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
用Python解数独的方法示例
Oct 24 Python
python的scipy实现插值的示例代码
Nov 12 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 Python
Python绘制地图神器folium的新人入门指南
May 23 Python
健身房被搭讪?用python写了个小米计时器助人为乐
Jun 08 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统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
JS的数组迭代方法
2015/02/05 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
pymysql模块的操作实例
2019/12/17 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
奉献爱心演讲稿
2014/09/04 职场文书
投资入股合作协议书
2014/10/28 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
如何写通讯稿
2015/07/22 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
详解Python中下划线的5种含义
2021/07/15 Python