一、折半查找

版本一:递归

/*
说明:v为数组,low为数组的下界,high为上界,x为需要查找的元素
*/

int binsearch(int v[],int low, int high, int x)
{
	int mid = (low+high) / 2;
	if(x == v[mid])
		return mid;

	if(low >= high)
		return -1;

	if(x < v[mid])
		return binsearch(v,low,mid-1,x);
	else
		return binsearch(v,mid+1,high,x);
}


版本二:用while循环

/*
说明:x为需要查找的元素,v为数组,n为数组的大小。
*/

int binsearch(int x,int v[], int n)
{
	int low, high, mid;

	low = 0;
	high = n-1;
	while(low <= high)
	{
		mid = (low+high)/2;
		if(x < v[mid])
			high = mid-1;
		else if(x > v[mid])
			low = mid+1;
		else
			return mid;
	}

	return -1;
}





posted on 2012-08-16 19:27  zyearn  阅读(179)  评论(0编辑  收藏  举报