c++之折半查找(二分查找)递归与非递归的实现
标签:ptr == 存在 lse 查找 arc const 大于 数组
递归实现
template
int binary_search(T arr[], int len, int left, int right, int find)
{
// 必要参数检查
if (NULL == arr || nullptr == arr || 0 > left || 0 > right || 0 > len)
return -1;
// 终止条件,数组不存在该元素
if (left > right)
return -2;
int mid = (left + right) / 2;
if (0 find)
return binary_search(arr, len, 0, mid - 1, find);
// find比中间值大,继续搜寻大于中间值部分
else
return binary_search(arr, len, mid + 1, right, find);
}
else
return -3;
}
非递归实现
template
int binary_search(T arr[], int len, const T find)
{
// 参数检查
if (0 == len || nullptr == arr || NULL == arr || 0 > len)
return -1;
int low = 0;
int high = len - 1;
while (low find)
high = mid - 1;
else
low = mid + 1;
}
else
break;
}
return -2;
}
c++之折半查找(二分查找)递归与非递归的实现
标签:ptr == 存在 lse 查找 arc const 大于 数组
原文地址:https://www.cnblogs.com/pandamohist/p/14180180.html
评论