【顺序查找】
原理:从最后一个元素往前这个判断,待查找的元素放在第0个位置做哨兵,第0个位置不存储序列元素(哨兵的作用:减少for循环中越界判断的条件)
☆查找成功的ASL:(1+2+3....+n)/n=(n+1)/2
☆查找失败的ASL:n+1(n个元素加第0个位置的哨兵)
算法进行改进:将所有的元素顺序排序,此时,ASL有变化!
☆查找成功的ASL:无变化
☆查找失败的ASL: (1+2+3+4+..n+n)/n+1=n/2+n/n+1(如下图所示,有n+1个失败结点)
特点:不要求序列有序,不限制存储结构
【折半查找】
特点:必须要求待查找的序列有序(因此下面的算法增加了函数来判断序列是否有序),必须顺序存储
关于折半查找的ASL重点看下面这个题
第一步 :随意画一棵查找树,其特