问答题 给出折半查找的递归算法,并给出算法时间复杂度分析。
【正确答案】
【答案解析】int BinSrch(rectype r[], int k, low, high){
//在长为n的有序表中查找关键字k,若查找成功,返回k所在位置,查找失败返回0
if(low<=high){ //low和high分别是有序表的下界和上界
mid=(low+high)/2;
if(r[mid].key==k) return(mid);
else if(r[mid].key>k) return (BinSrch(r, k, mid+1, high));
else return(BinSrch(r, k, low, mid-1));
else return 0; //查找失败
}
算法时间复杂度为O(log 2 n)。