長さ len の配列 a の対象要素を昇順に二分探索します
探索が成功した場合は添字を返します
それ以外の場合は -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的数组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; }
その他の関連記事はこちら配列内の要素を二分検索するには、PHP 中国語 Web サイトを参照してください。