|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
- }
复制代码
|
|