应用题
31.设记录R1,R2,…,Rn按关键字值从小到大顺序存储在数组r[1..n]中,在r[n+1]处设立一个监督哨,其关键字值为+∞。试写一查找给定关键字k的算法,并画出此查找过程的判定树,求出在等概率情况下查找成功时的平均查找长度。
【正确答案】 intSearch(rectype r[],int n,keytype k){
//在n个关键字从小到大排列的顺序表中,查找关键字为k的结点
r[n+1].key=MAXINT; //在高端设置监视哨
int i=1;
while(r[i].key<k)i++;
if(r[n+1].key=:k)return(i%(n十1));
else return(0);
}
查找过程的判定树是单枝树。本题中虽然表按关键字有序,但进行顺序查找,查找成功的平均查找长度亦为(n+1)/2。
【答案解析】