二分查找

二分查找,按从小到大排序

int BinarySearch(int a[],int x,int n)
{ 
	int low=0;int high=n-1;
	while(low<=high)
	{
		int middle=low+(high-low)>>1;//防止溢出,移位更高效
		if(x==a[middle])return middle;  
		if(x>a[middle])low=middle+1;
		else high=middle-1;
	}
	return -1;//元素未找到
}

 

递归版本:

int BinSearch(int Array[],int low,int high,int key/*要找的值*/)  
{  
    if (low<=high)  
    {  
        int mid = low+(high-low)>>1;  
        if(key == Array[mid])  
            return mid;  
        else if(key<Array[mid])  
            return BinSearch(Array,low,mid-1,key);  
        else if(key>Array[mid])  
           return BinSearch(Array,mid+1,high,key);  
   }  
    else  
        return -1;  
}  

二分查找及其扩展:

http://www.cnblogs.com/luxiaoxun/archive/2012/10/02/2710161.html

posted @ 2012-09-04 20:15  代码改变未来  阅读(144)  评论(0编辑  收藏  举报