#pragma mark -- 二分查找法
//非递归
int BinSearch1(int Array[], int low, int high, int key)
{
int ret = -1;
int mid = 0;
ret = (Array != NULL) && (low >= 0) && (high > low);
if (ret) {
while (low <= high) {
mid = (low + high) / 2;
if (Array[mid] == key) {
ret = mid;
return ret;
}else if (Array[mid] > key){
high = mid - 1;
}else{
low = mid + 1;
}
}
}
return ret;
}
//递归
int BinSearch2(int Array[], int low, int high, int key)
{
int ret = -1;
int mid = 0;
ret = (Array != NULL) && (low >= 0) && (high > low);
if (low <= high) {
mid = (low + high) / 2;
if (Array[mid] == key) {
return mid;
}
if (Array[mid] > key) {
return BinSearch2(Array, low, mid - 1, key);
}
if (Array[mid] < key) {
return BinSearch2(Array, mid + 1, high, key);
}
}
return -1;
}
复制代码
二分查找法
最新推荐文章于 2023-12-01 13:49:20 发布