/* ECP: FILEname=fig11_12.c */ /* 1*/ /* Return Position Of X in A */ /* 2*/ int /* 3*/ BinarySearch1( const char *A[ ], const char *X, int Low, int High ) /* 4*/ { /* 5*/ int Mid = ( Low + High ) / 2 ; /* 6*/ int Cmp; /* 7*/ if( Low > High ) /* Not Found */ /* 8*/ return -1; /* 9*/ if( ( Cmp = strcmp( X, A[ Mid ] ) ) < 0 ) /* X < A[ Mid ] */ /*10*/ return BinarySearch1( A, X, Low, Mid - 1 ); /*11*/ if( Cmp > 0 ) /* X > A[ Mid ] */ /*12*/ return BinarySearch1( A, X, Mid + 1, High ); /*13*/ return Mid; /* X = A[ Mid ] */ /*14*/ } /*15*/ int /*16*/ BinarySearch( const char *A[ ], const char *X, int N ) /*17*/ { /*18*/ return BinarySearch1( A, X, 0, N - 1 ); /*19*/ }