欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分查找法递归和非递归实现

程序员文章站 2024-03-19 15:37:34
...
//非递归实现
int BinarySearch(int A[], int length, int number)
{
	if(A==NULL || length<=0)
		return -1;
	int start=0;
	int end=length-1;
	
	while(start<end)
	{
		int mid=(start+end)/2;
		if(A[mid]==number)
			return mid;
		else
			if(A[mid]>number)
			{
				end=mid-1;
			}
			else
				start=mid+1;
	}
	return -1;

}
//递归实现
int BinarySearch(int A[], int start, int end,int number)
{
	if(A==NULL || start<end||start<0)
		return -1;
	int mid=(start+end)/2;
	
	if(A[mid]>number)
		return BinarySearch(A,start,mid-1,number);
	if(A[mid]<number)
		return BinarySearch(A,mid+1,end,number);
	if(A[mid]==number)
		return mid;
}