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基础教程之udp端口扫描
Feb 10 Python
python解析中国天气网的天气数据
Mar 21 Python
python任务调度实例分析
May 19 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
Django实现网页分页功能
Oct 31 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
python中pow函数用法及功能说明
Dec 04 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
简单的用PHP编写的导航条程序
2006/10/09 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
酒店中秋节活动方案
2014/01/31 职场文书
辞职信怎么写
2015/02/27 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
浅谈克隆 JavaScript
2021/11/02 Javascript
详解Python如何批量采集京东商品数据流程
2022/01/22 Python