参考

查找

1.顺序查找
顺序遍历。

2.二分查找
折半查找、二分查找,一个东西。对数据有要求,必须是按照关键字进行排序的。

3.插值查找
在二分查找上做的优化。其实就是计算mid值不再是除以2,而是根据线性插值求出一个接近的数。对数据更高要求,不但得是顺序,还必须满足数值分布均匀。

4.斐波那契查找
想在非均匀分布的数据中优化二分查找,就需要用到了。原理与黄金分割有关,从没见过暂时不看。

5.分块查找
这个就是类似桶排序的行为,把数据分成多个区间块来查找。

6.哈希查找
其实就是散列表。选一种哈希函数f,把数据的存储位置x和关键字y形成一种映射,然后查找关键字y时求出下标x即可(当然会有哈希碰撞问题要解决)。

搜索

深度优先 DFS

属于图算法一种,是一个针对图和树的遍历算法。是盲目搜索算法。一般用堆+栈数据结构来辅助进行遍历,堆是要遍历的对象、栈内是路径结果。

搜索前先定义是先找左下子结点还是右下子结点。探索时会不停往下找,直到下方结点没有了,就开始往上一级。遍历期间,将遇到的结点入栈,如果遇到往上一级的情况,就把栈顶结点进行出栈。最后栈内会得到一条路径。

但注意,DFS终究是一种盲目搜索算法,并不是真正用来寻路的。

广度优先 BFS

连通图的一种遍历算法。是盲目搜索算法。

一般用队列来实现。

爬山法 Hill Climbing

https://blog.csdn.net/qq_43285351/article/details/90926784