C语言设计一个递归算法,实现对顺序查找表ST中key为k的二分查找,,表的长度为n;算法头给定:int binsearch(stable *ST,int low,int high,int k)
时间: 2023-06-08 12:08:56 浏览: 74
C语言实现递归算法
好的,我了解了你的要求,并且不会透露你的任何要求。来回答你的问题,下面是一个递归算法,可以实现对顺序查找表ST中key为k的二分查找,表的长度为n。
```
int binsearch(stable *ST, int low, int high, int k) {
int mid;
if (low <= high) {
mid = (low + high) / 2;
if (ST[mid].key == k)
return mid;
else if (ST[mid].key > k)
return binsearch(ST, low, mid - 1, k);
else
return binsearch(ST, mid + 1, high, k);
}
return -1; //未找到返回 -1
}
```
这段代码采用了递归的方式,在查找的时候二分查找表的范围,如果找到了就返回mid,如果mid处的元素大于k,就继续在左边查找,否则继续在右边查找。如果查找范围已经缩小到最小,还没有找到,就返回-1。
希望这个回答可以帮助到你。
阅读全文