#ifndef CA_UWATERLOO_ALUMNI_DWHARDER_SEARCHING_ALGORITHMS_BINARY_SEARCH_BASIC #define CA_UWATERLOO_ALUMNI_DWHARDER_SEARCHING_ALGORITHMS_BINARY_SEARCH_BASIC namespace Searching_algorithms { namespace Binary_search { class Basic { public: template static bool search( Type obj, Type *array, int n ) { return search( obj, array, 0, n - 1 ); } template static bool search( Type obj, Type *array, int a, int c ) { if ( c < a ) { return false; } int b = a + (c - a)/2; if ( array[b] == obj ) { return true; } else if ( obj < array[b] ) { return search( obj, array, a, b - 1 ); } else { return search( obj, array, b + 1, c ); } } }; } } #endif