Implement a generic binary search algorithm for Integer Double String etc

A Simple Binary Search for Integers

BinarySearch(A[0..N-1], value) 
{
   low = 0
   high = N - 1
   while (low <= high) {
       mid = low + ((high - low) / 2)
       if (A[mid] > value)
           high = mid - 1
       else if (A[mid] < value)
           low = mid + 1
       else
           return mid // found
    }//while end
   return -1 // not found
}
To implement  Generic Binary Search

- Comparison must be based upon Data type of Input.
- to get Data type of Input
           - sizeof( )
           Eg:
       #define TYPE(x)(
       sizeof(x) == sizeof(integer) ? return integer:
       sizeof(x) == sizeof(character) ? return char:
       sizeof(x) == sizeof(double)) ? return double :
       )

- Make function to compare according to size.

Compare (A[mid] , value)
{
if(TYPE(A[mid] != TYPE(value)) return null;

if ( TYPE( A[mid] == integer ){ 
//Simple comparison and return
}

if ( TYPE( A[mid] == character ){
// Compare with User Defined which function which checks for lexicographic order.
//See Void CompareLexo()
}
}//Compare Void CompareLexo(){ //pseudo code to understand logic. const char* string = "Bac"; int c = strcmp(string, "Bca"); c will be <= -1 //In case of//
const char* string = "Bac";
int c = strcmp(string, "B");
c will be >=1 
}
The same way you can think for Double , Structure etc Input and create your code.


PS : Please comment/mail us perfect running code or better logic