题目:折半查找的递归算法。初始调用时。low为1,high为ST.length。
算法思想:根据查找的起始位置和终止位置,将查找序列一分为二,判断所查找的关键字在哪一部分,然后用新的序列的起始位置和终止位置递归求解。
完整代码:typedef struct{ //查找表的数据结构
ElemType *elem; //存储空间地址,建表时按实际长度分配,0号留空
int length; //表的长度
}SSTable;
int BinSearchRec(SSTable ST,ElemType key,int low,int high){
if(low > high){
return 0;
}
mid - (low + high) / 2; //取中间位置
if(key > ST.elem[mid]){ //向后半部分查找
Search(ST,key,mid + 1,high);
}
else if(key < ST.elem[mid]){ //向前半部分查找
Search(ST,key,low,mid - 1);
}
else{
return mid; //查找成功
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)