Tuesday, November 20, 2012

A recursive binary search algorithm


public int binarySearch(int element)
    {
     
        int middleIndex  = calculateMiddleIndex(data);
       
        int zeroIndexedMiddle=middleIndex-1;
       
        if(data.length==0 || (data.length==1 && data[0]!=element))
        {
            System.out.println("Data Not Found");
            return 100; //denoting data not found
           
        }
        System.out.println(data[zeroIndexedMiddle]);
        if(data[zeroIndexedMiddle]==element)
        {
            return middleIndex;
        }
        else if(data[zeroIndexedMiddle]<element)
        {
            tmp=data;
            data = new int[size-middleIndex];
            System.arraycopy(tmp, middleIndex, data, 0, size-middleIndex);
            size=data.length;
            return binarySearch(element);
        }
        else
        {
            tmp=data;
            data = new int[size-zeroIndexedMiddle];
            System.arraycopy(tmp, 0, data, 0, size-zeroIndexedMiddle);
           
            size=data.length;
           
            return binarySearch(element);          
           
        }
       
    }