应用题 5.编写对有序表进行顺序查找的算法,并画出对有序表进行顺序查找的判定树。假设每次查找时的给定值为随机值,且查找成功和不成功的概率也相等,试求进行每一次查找时和给定值进行比较的关键字个数的期望值。
【正确答案】 int Search(rectype R[],int n,K){
//在具有n个元素的有序表R中,顺序查找值为K的结点,查找成功返回其位置,
//否则返回一1表示失败
int i=0;
while(i<n){
if(R[i]==K)return(i);
else if(R[i]>K)return(一1);
i++:
}//while
return一1;
}
在等概率的情况下,则查找成功的平均查找长度为(n+1)/2,查找失败的平均查找长度为(n+2)/2(失败位置除小于第一个,还存在大于最后一个)。若查找成功和不成功的概率也相等,则查找成功时和关键字比较的个数的期望值约为(n+1)/4。
【答案解析】