Y
ynduanlian
Unregistered / Unconfirmed
GUEST, unregistred user!
比如说:
/*使用监视哨顺序查找*/
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的比较,就这么费时么?
/*使用监视哨顺序查找*/
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的比较,就这么费时么?