对分查找(Binary Search)C 语言学习

前几天复习了一下对分查找(Binary Search),它提供了在 O(log N) 时间内的 Find (查找操作),先来看看对分查找的叙述要求:

      给定一个整数 X 和整数 clip_image002,后者已经预先排序,并且已经在内存中,求使得 clip_image002[4]的下标 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 的时候,已经经过了一次排序。

原文地址:https://www.cnblogs.com/catprayer/p/1859697.html