在n个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分查找来实现这一查找过程。

在n个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分查找来实现这一查找过程。


#include<stdio.h>
int half(int left, int right, int key,int*a)  
{
    if (left < right)
    {
        int mid = (left + right) / 2;    
        if (a[mid] == key)      
            return mid;
        else if (a[mid] > key)     
            return half(left, mid - 1, key,a);   
        else                            
            return half(mid + 1, right, key,a);   
    }
    return -1;
}
int main()
{
    int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
    printf("%d\n", half(0, 9, 1, a));
    return 0;
}