算法 - 查找 - 顺序查找 (Sequential Search)
返回上级:算法 - 查找与排序 (Searching and Sorting)
本文将用C++实现通用模板顺序查找算法,复制代码直接可使用。
在查看本文之前,需要一些程序语言的基础。
文章目录
1 顺序查找简述 (Introduction)
顺序查找,又称线性查找,主要用于在线性结构中进行查找操作。时间复杂度 O(n) 。
假设表中有 n 个元素,查找过程为从表的第一个元素(或最后一个元素)依次对元素的关键字与给定值的关键字比较:
-
(1)如果与给定关键字相同,则查找成功,返回在表中的位置;
-
(2)如果整个表都检测完成,没有找到相同关键字,则查找失败。
如果顺序表是有序表,则失败条件除检测完整张表外,还有:
-
(1)正向查找,给定值大于关键字,则失败;
-
(2)反向查找,给定值小于关键字,则失败。
通常情况下:
-
返回值,代表下标;
-
返回-1,代表没有找到关键字;
其一般查找成功平均查找长度为:
A S L s u c c = ∑ i = 0 n − 1 1 n ( i + 1 ) = n + 1 2 {ASL}_{succ} = \sum_{i=0}^{n-1} \frac{1}{n} (i+1) = \frac{n+1}{2} ASLsucc=i=0∑n−1n1(i+1)=2n+1
其一般查找不成功平均查找长度为:
A S L u n s u c c = n + 1 {ASL}_{unsucc} = n+1