閱讀以下說(shuō)明、C函數(shù)和問(wèn)題,回答問(wèn)題1和問(wèn)題2將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
當(dāng)數(shù)組中的元素已經(jīng)排列有序時(shí),可以采用折半查找(二分查找)法查找一個(gè)元素。下面的函數(shù)biSearch(intr[],intlow,inthigh,intkey)用非遞歸方式在數(shù)組r中進(jìn)行二分查找,函數(shù)biSearch_rec(intr[],intlow,inthigh,intkey)采用遞歸方式在數(shù)組r中進(jìn)行二分查找,函數(shù)的返回值都為所找到元素的下標(biāo);若找不到,則返回-1。
【C函數(shù)1】
intbiSearch(intr[],intlow,inthigh,intkey)
//r[low..high]中的元素按非遞減順序排列
//用二分查找法在數(shù)組r中查找與key相同的元素
//若找到則返回該元素在數(shù)組r的下標(biāo),否則返回-1
{
intmid;
while((1)){
mid=(low+high)/2;
if(key==r[mid])
returnmid;
elseif(key<r[mid])
(2);
else
(3);
}/*while*/
return-1;
}/*biSearch*/
【C函數(shù)2】
intbiSearch_rec(intr[],intlow,inthigh,intkey)
//r[low..high]中的元素按非遞減順序排列
//用二分查找法在數(shù)組r中查找與key相同的元素
//若找到則返回該元素在數(shù)組r的下標(biāo),否則返回-1
{
intmid;
if((4)){
mid=(low+high)/2;
if(key==r[mid])
returnmid;
elseif(key<r[mid])
returnbiSearch_rec((5),key);
else
returnbiSearch_rec((6),key);
}/*if*/
return-1;
}/*biSearch_rec*/
問(wèn)題:4.1(12分)
請(qǐng)?zhí)畛銫函數(shù)1和C函數(shù)2中的空缺,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
問(wèn)題:4.2(3分)
若有序數(shù)組中有n個(gè)元素,采用二分查找法查找一個(gè)元素時(shí),最多與()個(gè)數(shù)組元素進(jìn)行比較,即可確定查找結(jié)果。
(7)備選答案:
A.[log2(n+1)]B.[n/2]C.n-1D.n