Exemple #1
0
//递归解法
int binary_search1(DataType *arr,int len,DataType value,int(* comp)(DataType,DataType))
{
	if(len<=0) 
		return 0;
	if(comp(value,arr[(len-1)/2]))
		return binary_search1(arr,(len-1)/2,value,comp);
	if(comp(arr[(len-1)/2],value))
		return binary_search1(arr+(len-1)/2+1,len-1-(len-1)/2,value,comp);
	return 1;
	
}
//递归
 int binary_search1(int *p,int low ,int high,int goal)
 {
     while(low<=high)
     {
        int middle=(low+high)/2;
        if(p[middle-1] == goal)
            return middle;//查找到返回下标
        else if(goal > p[middle])
            return binary_search1(p,middle+1 ,high,goal);//右半区
        else
            return binary_search1(p,low,middle-1,goal);//左半区
     }
     return -1;//没有找到
 }
Exemple #3
0
int main()
{
	DataType arr[10]={0,2,4,6,8,10,12,14,16,18};

    printf("%d\n",binary_search(arr,10,0,less));
	printf("%d\n",binary_search(arr,10,10,less));
	printf("%d\n",binary_search(arr,10,16,less));
	printf("%d\n",binary_search(arr,10,11,less));
    printf("\n");

	printf("%d\n",binary_search1(arr,10,0,less));
	printf("%d\n",binary_search1(arr,10,10,less));
	printf("%d\n",binary_search1(arr,10,16,less));
	printf("%d\n",binary_search1(arr,10,11,less));
	return 0;
}