1.折半查找(二分查找)
只适用于有序(升序或降序)的顺序表
eg.查找序列中35元素
(1)当mid=35时,查找到该目标;
(2)若35<mid,则high=mid-1,low不变;
(3)若35>mid,则low=mid+1,high不变;继续查找
重复上述(1)(2)(3)过程
2. 折半查找-查找判定树
构建查找判定树:(1)将序列有序排列后标示下标。(首元素下标+末元素下标 )/2向下取整,即为树的根节点,确定根节点后,根节点的左半边和右半边使用同样方法确定根节点的左孩子和右孩子。(向下取整:eg.=5)。
(2)补齐查找失败的节点。
折半查找平均查找长度的计算:
(1)查找成功的平均查找长度:
(2)查找失败的平均查找长度:
3.分块查找
分块查找的平均长度=查找索引表确定所在块的平均查找长度+块中查找元素的平均长度;
- 查找索引表确定所在块的平均查找长度与索引表长度有关;
- 块中查找元素的平均长度与块的长度有关。
4.分块查找(索引顺序查找),是顺序查找的一种改进方式
(1)先查找索引表,确定待查元素所属的分块(采用顺序查找或折半查找)。
(2)在分块内用顺序查找法。
5.分块查找效率分析
其中,Lb为索引表的平均查找长度,Ls为所属分块的平均查找长度