马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 mingcxx 于 2016-9-25 23:35 编辑
问题描述:实现对分查找使得在每次迭代中只有一个二路比较。
我不太明白“只有一个二路比较”是什么意思?难道是if else语句的分支判断吗?是说条件判断只能有两个分支的意思吗?
那下面这个传统的对分查找算法不是二路比较吗?int binarySearch(const int A[], int N, int X)
{
int low, high, mid;
low = 0;high = N - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (A[mid] < X)
low = mid + 1;
else if (A[mid] > X)
high = mid - 1;
else
return mid;
}
return -1; //not found
}
这么写呢?是二路比较么?这个名词第一次听。int binarySearch(const int A[], int N, int X)
{
int low, high, mid;
low = 0; high = N - 1;
while (low < high)
{
mid = (low + high) / 2;
if (A[mid] < X)
low = mid + 1;
else
high = mid;
}
if (A[low] == X)
return low;
else
return -1; //not found
}
|