1. 算法概述
- 顺序查找算法:按照数据的顺序一项一项逐个查找,所以不管数据顺序如何,都要从头到尾的遍历一次。速度比较慢,它的时间复杂度是 T=O(n)。
- 二分查找算法:将数据分割成两等份,然后用键值(要查找的数据)与中间值进行比较,逐个缩小查找范围。速度比顺序查找快,它的时间复杂度是 T=O(log n)。
- 插补查找算法:按照数据的分布,利用公式预测键值所在的位置,快速缩小键值所在序列的范围,慢慢逼近,知道查找到数据为止,这中算法比二分法查找速度还快,它的时间复杂度为 T=O(log log(n))。
- 分块查找算法:要求是顺序表,它是顺序查找算法的一种改进方法,它的时间复杂度是 T=O(log以2为底m的对数+N/m)。
- 斐波拉契查找算法:斐波拉契查找算法就是在二分法的基础上根据斐波拉契数据进行分割。用键值(想要查找的数据)与黄金分割点进行比较。逐渐缩小查找范围。它的时间复杂度是 T=O(log 2n)。
- 哈希查找算法:把一些复杂的数据,通过某种函数映射关系,映射成更加易于查找的方式。这种方法速度最快,它的时间复杂度是 T=O(1)。
查找算法的名称 | 时间复杂度(大O表示法) |
顺序查找算法 | O(n) |
二分查找算法 | O(log n) |
插补查找算法 | O(log log n) |
分块查找算法 | O(log以2为底m的对数+N/m) |
斐波拉契查找算法 | O(log 2n) |
哈希查找算法 | O(1) |
上述时间复杂度都是按照各个算法的平均(理想)复杂度进行计算的。实际应用中。情况的不同复杂度就会不同。