数据结构中讲查找时说过“监视哨”,为什么用监视哨能使用减少查找时间?
比如说:
/*使用监视哨顺序查找*/
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的比较,就这么费时么?