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抓取网页内容示例分享
Feb 24 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
python使用tornado实现简单爬虫
Jul 28 Python
python 重命名轴索引的方法
Nov 10 Python
学习python可以干什么
Feb 26 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
Python中and和or如何使用
May 28 Python
Win10环境中如何实现python2和python3并存
Jul 20 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单一接口的实现方法
2015/06/20 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
15个常用的jquery代码片段
2015/12/19 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
Python 代码性能优化技巧分享
2012/08/07 Python
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python:动态路由的Flask程序代码
2019/11/22 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
旅游专业职业生涯规划范文
2014/01/13 职场文书
2014植树节活动总结
2014/03/11 职场文书
2014年纠风工作总结
2014/12/08 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
微信搭讪开场白
2015/05/28 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
python 镜像环境搭建总结
2022/09/23 Python