对分查找(Binary Search)----C 语言学习
前几天复习了一下对分查找(Binary Search),它提供了在 O(log N) 时间内的 Find (查找操作),先来看看对分查找的叙述要求:
给定一个整数 X 和整数
,后者已经预先排序,并且已经在内存中,求使得
的下标 i ,如果 X 不在数据之中,则返回 i = -1。
来看看实现源码:
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; /*Found*/
}
return -1;/*Not Found: Return -1*/
}
这里要注意的是:作为参数的数组 A,在调用函数 BinarySearch 的时候,已经经过了一次排序。


浙公网安备 33010602011771号