• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
SS婴
博客园    首页    新随笔    联系   管理    订阅  订阅
查找02

顺序查找法的平均查找长度(ASL)

假设列表长度为n,若查找从最后一个元素开始找起:

• 查找第1个元素,需进行n次比较;

• 查找第2个元素,需进行n-1次比较;

• …………

• 查找第n个元素,需进行1次比较

又假设查找每个数据元素的概率相等,即Pi=1/n

• 则顺序查找算法的平均查找长度为:

ASL=1*1/n+2*1/n+…+n*1/n

=(1+2+…+n)*1/n

=(n+1)/2

 

 

折半查找法(二分查找法)

 基本思想:

 将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

 

折半查找算法

int BinSrch (int a[ ], int n, KeyType k)

/*在表长为n的有序表 a[]中折半查找其关键字等于 k 的元素,

若找到,则函数值为该元素在表中的位置*/

{ low=1 ; high=L.length; /*置区间初值*/

while ( low<=high)

{ mid=(low+high) / 2;

if (k==a[mid])

return(mid); /*找到待查元素*/

else if (k<a[mid])

high=mid-1; /*继续在前半区间进行查找*/

else

low=mid+1; /*继续在后半区间进行查找*/

}

return (0);

}

 

posted on 2020-06-08 14:40  SS婴  阅读(80)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3