数据结构中讲查找时说过“监视哨”,为什么用监视哨能使用减少查找时间?

ynduanlian 2007-01-09 04:38:00
比如说:
/*使用监视哨顺序查找*/
int search(recordlist l,int k)
{
int pos=l.length;
l.r[0]=k; /*监视哨*/
while(l.r[pos]!=k)
pos--;
return(pos);
}

教材上说:“实践证明,使用/*监视哨*/在查找的列表长度>1000时,减少约一半的查找时间。”
但理由却没有说,只说让参阅另一本参考教材。讲哪位讲讲,这个算法比下面不用/*监视哨*/有什么好处?
int search(recordlist l,int k)
{
int pos=l.length;
while((l.r[pos]!=k) && (pos>=0))
pos--;
return(pos);
}
难道一个pos>=0的比较,就这么费时么?
...全文
886 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryuginka 2007-01-09
  • 打赏
  • 举报
回复
因为有了参照,所以在算法上有所节约
ryuginka 2007-01-09
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/5136/5136128.xml?temp=.1305658
ryuginka 2007-01-09
  • 打赏
  • 举报
回复
sf

662

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧