- 二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。
- 二分查找是时间复杂度为
O(logn)的算法。 - 二分查找依赖的是顺序表结构,查找针对的是有序数据,而数组为了支持随机访问的特性,要求内存空间连续,对内存的要求比较苛刻。
- 二分查找只能用在插入、删除操作不频繁,一次排序多次查找的场景中。
- BF算法中文叫作暴力匹配算法,也叫朴素匹配算法。
- 通过哈希算法对主串中的n-m+1个子串分别求哈希值,然后逐个与模式串的哈希值比较大小。如果某个子串的哈希值与模式串相等,那就说明对应的子串和模式串匹配了。因为哈希值是一个数字,数字之间比较是否相等是非常快速的,所以模式串和子串比较的效率就提高了。
- 模式串哈希值与每个子串哈希值之间的比较的时间复杂度是O(1),总共需要比较n-m+1个子串的哈希值,这部分的时间复杂度也是O(n)。
- RK算法整体的时间复杂度就是O(n)。
- Trie树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。
- 在一组字符串中,频繁地查询某些字符串,用Trie树会非常高效。构建Trie树的过程,需要扫描所有的字符串,时间复杂度是O(n)。但一旦构建成功之后,后续的查询操作会非常高效。


