首先介绍下二分法查找,又叫对分查找:
给定一个整数X 和整数A0,A1,A2,.............An-1, 后者已经预先排序并在内存中,求使得Ai = X 的下标i,如果X不在数据中,则返回i = -1。
一个好的策略是验证X是否是居中的元素,如果是,则答案就找到了,如果X小于居中元素,那么我们可以用同样的策略于居中居中元素左边已经排序的子序列;同理,如果X大于居中元素,那么我们检查数据的右半部分。
代码:
int BinarySearch(const int A[], int X, int N)
{
int Low, Mid, High;
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;
}
这里是给出了一系列点的坐标,所以不能直接用二分法,因为如果将每个点之间距离求出来排序的话,就没有用二分法的必要了,因为已经直