使用C++语言来实现二分查找算法(采用递归和非递归两种方式)
发布时间
阅读量:
阅读量
需要注意的一点内容是:middle的值等于start加上(end减去start)的一半;//当left与right之和超过所在类型所能表示的范围时,middle就不会得到正确的值。因此采用这样的表达更为稳妥。
另一个需要注意的地方是,在这种情况下使用二分搜索时需要先对数组进行排序。当所处理的数据未预先排序时,则无法应用这些方法。除了在特定条件下应用这些程序外,在大多数情况下仍需确保数据以升序排列。
#include
using namespace std;
bool IsInvalidInput = false;
int BinarySearch(int* data, int length, int start, int end, int k) // 假设数据数组必须是排序好的升序数组
{
if (data == NULL || length < 0 || start < 0 || end < 0 || start > end)
{
IsInvalidInput = true;
return -1;
}
while (start <= end)
{
int middle = start + (end - start) / 2; // 计算中间位置
if
全部评论 (0)
还没有任何评论哟~
