有序表查找的递归算法

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:32:01
int Search_Bin(SSTable ST,KeyType key)
//在有序表ST中折半查找其关键字等于key的数据元素。若找到,则函数值为
//该元素在表中的位置,否则为0.
{
low = 1; high = ST.length;
while(low <= high)
{
mid = (low + high)/2;
if(EQ(key, ST.elem[mid].key))
return mid;
else if (LT(key,ST.elem[mid].key))
high = mid -1;
else low = mid + 1;
}
return 0;
}//Search.Bin
这是个算法,求各位大大帮忙用递归的方式表示一下他,写出用递归表达的程序,谢谢了

int Search_Bin(SSTable ST, keyType key)
{
return Search_Bin(ST, key, 1, ST.length);
}

int Search_Bin(SSTable ST,keyType key, int low, int high)
{
if(low==high)
{
if(ST.elem[low].key == key)
return low;
else
return 0;
}
int mid = (low+high)/2;
int result = 0;
if( (result=Search_Bin(ST, key, low, mid))!=0)
return result;
else
return Search_Bin(ST, key, mid+1, high)

}

int Search(int high,int low);
int Search_Bin(SSTable ST,KeyType key)
{
int low=1,high=ST.length;
return Search(high,low);
}
int Search(int high,int low)
{
int mid = (low + high)/2;
if(EQ(key, ST.elem[mid].key))
return mid;
else if(low>high)return 0;
else
{
if(LT(key,ST.elem[mid].key)) return Search(low,mid-1);
else return Search(mid+1,high);
}
}

-----------------------------------
自己凭感觉