前几天复习了一下对分查找(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 的时候,已经经过了一次排序。