时间:2021-05-22
一般我们在解决问题时候,经常能碰到好几种解决方式,总归是有最优,还有最不推荐的选择的,针对搜索算法也一样,因为能实现的方式也有很多个,因此,不知道大家在什么场景里使用这些算法,反正小编都把这些算法整理出来了,供大家选择,另外针对个人理解,大家也可以参考哪个更好使用哦~
搜索算法
线性搜索
按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。是最简单的一种搜索算法。
二分搜索算法
这种搜索算法每一次比较都使搜索范围缩小一半。
插值搜索算法
是根据要查找的关键字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_reslis = [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搜索算法使用方法内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了JS/HTML5游戏常用算法之路径搜索算法A*寻路算法。分享给大家供大家参考,具体如下:原理可参考:https://pPointF);varfin
本文实例讲述了PHP实现深度优先搜索算法。分享给大家供大家参考,具体如下:深度优先搜索的实现原理:实现代码:dfs_save=array(array(0,1,1
本文实例讲述了JS/HTML5游戏常用算法之路径搜索算法随机迷宫算法。分享给大家供大家参考,具体如下:路径搜索算法在游戏中非常常见,特别是在RPG、SLG中经常
随着移动设备的普及,无线设备对淘宝流量更加霸道。今天,我们将推广手动搜索算法的标准和如何优化手动搜索流量。。一.手工搜索算法的评价标准首先,手工搜索算法应用的是
本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法。分享给大家供大家参考,具体如下:根据维基百科的伪代码实现:广度优先BFS:使用队列,集