C++二分法查找數(shù)組中的元素

字號:


    二分法查找升序長度為len的數(shù)組a中的target元素
    查找成功則返回下標
    否則,返回-1
    #include <stdio.h>
    int print_num( int num )
    {
    printf( "print_num() num = %d\n", num );
    return 0;
    }
    typedef int ( *type_print_num_func )( int num );
    /*
    二分法查找升序長度為len的數(shù)組a中的target元素
    查找成功則返回下標
    否則,返回-1
    */
    int bsearch( int *a, int len, int target )
    {
    int low = 0, high = len, mid;
    /*查找開始*/
    while( low <= high )
    {
    mid = ( low + high )/2;
    if( *( a + mid ) == target )
    return mid;
    else if( *( a + mid ) < target )
    low = mid + 1;
    else
    high = mid - 1;
    }
    return -1;
    }
    int main( int argc, char *argv[] )
    {
    type_print_num_func func;
    int ( *func2 )( int num );
    print_num( 1 );
    func = print_num;
    func( 2 );
    func2 = print_num;
    func2( 3 );
    system( "pause" );
    return 0;
    }