广度优先搜索(BFS)
深度优先搜索(DFS)
爬山
优先搜索策略(OptimalFirstSearchStrategy)
回溯
分支和边界搜索算法

二分法的平均查找效率为O(logn),但数组必须是有序的。如果还没有排序,我们首先要使用O(nlogn)预处理来排序。而且它的比较困难,往往需要移动整个数组,所以在动态情况下速度较慢。
哈希搜索理想的和搜索效率是O(1),但条件是需要找到一个好的哈希函数,使分布更加均匀。而且,哈希表需要很大的空间,至少比O(n)大几倍,否则碰撞的概率非常高。
二叉排序树搜索也是O(logn)。关键是你输入值的时候需要做一些处理,让其更加平衡(否则很容易出现重力不平衡,最坏情况下搜索效率会下降到O)(n),而且是写起来有点问题。对于具体的算法,你可以简单地找一本介绍数据结构的书。当然,如果您使用C语言,则可以简单地使用map和multimap库类型。它是使用红黑树实现的。理论上,和查找时间是O(logn),这非常方便,但通常会比您实现的平衡二叉树稍慢。

对程序员有用的实用算法提示
算法1:快速排序算法
快速排序是由TonyHall开发的一种排序算法。平均而言,对n个元素进行排序需要O(nlogn)次比较。在最坏的情况下,需要进行O(n2)的比较,但这种情况很少见。事实上,快速排序通常比其他O(nlogn)算法快得多,因为它的内部循环可以在大多数体系结构上高效实现。
快速排序使用分治策略将序列(列表)拆分为两个子系列(子列表)。
算法二:堆排序算法
堆排序是指利用堆数据结构设计的排序算法。堆栈是一种近似完全二叉树的结构,满足堆栈的属性:即子节点的键值或索引始终小于(或大于)其父节点。
堆排序的平均时间复杂度为O(nlogn)。
算法3:归并排序
MergeSort(归并排序,翻译:归并排序)基于递归操作的高效排序算法。该算法是一个非常典型的分而治之的应用。
算法4:二分搜索算法
二分搜索算法是一种在有序数组中搜索特定元素的算法。搜索过程从数组的中间元素开始。如果中间元素就是要搜索的元素,则搜索过程结束:如果某个元素大于或小于中间元素,则数组将大于或小于中间元素。找到一半并像以前一样开始与中间元素进行比较。如果在某个步骤数组为空,则意味着找不到它。该搜索算法每次比较都会将搜索范围缩小一半。半搜索每次将搜索空间减少一半,时间复杂度为O(logn)。
算法5:BFPRT(线性搜索算法)
BFPRT算法解决的问题非常经典:从一个序列中选择第k大(第k小)n个元素的元素,得益于智能分析,BFPRT可以确保最坏情况的时间复杂度仍然是线性的。这个算法的思想和快速排序类似。当然,为了保证算法在最坏情况下仍然达到o(n)的时间复杂度,算法的五位作者做了一些精致的处理。
算法6:BFS(广度优先搜索)
广度优先搜索是一种图搜索算法。简单来说,BFS从根节点开始,按照树(图)的宽度遍历树(图)节点。如果访问了所有节点,则算法中止。BFS也是一种盲目搜索。队列数据结构通常用于帮助实现BFS算法。
