时间:2020-11-18来源:www.pcxitongcheng.com作者:电脑系统城
一般我们在解决问题时候,经常能碰到好几种解决方式,总归是有最优,还有最不推荐的选择的,针对搜索算法也一样,因为能实现的方式也有很多个,因此,不知道大家在什么场景里使用这些算法,反正小编都把这些算法整理出来了,供大家选择,另外针对个人理解,大家也可以参考哪个更好使用哦~
搜索算法
线性搜索
按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。是最简单的一种搜索算法。

二分搜索算法
这种搜索算法每一次比较都使搜索范围缩小一半。
插值搜索算法
是根据要查找的关键字key与顺序表中最大、最小记录的关键字比较后的查找方法,它假设输入数组是线性增加的。
跳跃搜索算法
需要通过固定的跳跃间隔,这样它相比二分查找效率提高了很多。
快速选择
快速选择一般是以原地算法的方式实现,除了选出第k小的元素,数据也得到了部分地排序。
禁忌搜索
是一种现代启发式算法,一个用来跳脱局部最优解的搜索方法。
关于算法的知识点扩展:
线性搜索
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | deflinear_search(data, search_for): """线性搜索""" search_at =0 search_res =False whilesearch_at < len(data) andsearch_res isFalse: ifdata[search_at] ==search_for:  search_res =True else:  search_at +=1 returnsearch_reslis =[5, 10, 7, 35, 12, 26, 41]print(linear_search(lis, 12))print(linear_search(lis, 6)) | 
插值搜索
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | definsert_search(data,x): """插值搜索""" idx0 =0 idxn =(len(data) -1) whileidx0 <=idxn andx >=data[idx0] andx <=data[idxn]: mid =idx0 +int(((float(idxn -idx0)/(data[idxn] -data[idx0])) *(x -data[idx0]))) ifdata[mid] ==x:  return"在下标为"+str(mid) +"的位置找到了"+str(x) ifdata[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搜索算法原理及实例讲解的文章就介绍到这了
2023-03-17
python flask项目打包成docker镜像发布的过程2023-03-17
python调试模块ipdb详解2023-03-17
python使用openai生成图像的超详细教程python cron定时任务触发接口自动化巡检 apscheduler报错:Run time of job …… next run at: ……)” was missed by misfire_grace_time参数 找到任务超时的根本原因...
2023-03-15