算法:查找与搜索
参考
查找
1.顺序查找
顺序遍历。
2.二分查找
折半查找、二分查找,一个东西。对数据有要求,必须是按照关键字进行排序的。
3.插值查找
在二分查找上做的优化。其实就是计算mid值不再是除以2,而是根据线性插值求出一个接近的数。对数据更高要求,不但得是顺序,还必须满足数值分布均匀。
4.斐波那契查找
想在非均匀分布的数据中优化二分查找,就需要用到了。原理与黄金分割有关,从没见过暂时不看。
5.分块查找
这个就是类似桶排序的行为,把数据分成多个区间块来查找。
6.哈希查找
其实就是散列表。选一种哈希函数f,把数据的存储位置x和关键字y形成一种映射,然后查找关键字y时求出下标x即可(当然会有哈希碰撞问题要解决)。
搜索
深度优先 DFS
属于图算法一种,是一个针对图和树的遍历算法。是盲目搜索算法。一般用堆+栈数据结构来辅助进行遍历,堆是要遍历的对象、栈内是路径结果。
搜索前先定义是先找左下子结点还是右下子结点。探索时会不停往下找,直到下方结点没有了,就开始往上一级。遍历期间,将遇到的结点入栈,如果遇到往上一级的情况,就把栈顶结点进行出栈。最后栈内会得到一条路径。
但注意,DFS终究是一种盲目搜索算法,并不是真正用来寻路的。
广度优先 BFS
连通图的一种遍历算法。是盲目搜索算法。
一般用队列来实现。
爬山法 Hill Climbing
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CodingCodingK Blog!