メモ:バイナリサーチ
/* 引数 int ary : 探索する配列(ソート済み) int key : 探索する値 戻り値 int 1 : 見つかった int 0 : 見つからなかった */ int binarySearch( const int ary[], int key ){ int low = 0; int high = ARRAY_SIZE-1; // ARRAY_SIZEは配列の要素数 int mid; while( low <= high ){ mid = (low+high)/2; if( ary[mid] == key ){ return 1; } else if( ary[mid] < key ){ low = mid+1; } else { high = mid-1; } } return 0; }
ARRAY_SIZE定数を、sizeof(ary)/sizeof(ary[0])に変えたかった。わざわざARRAY_SIZE定数を用意するのが面倒くさいから。
でも、不具合。
sizeof()で「sizeof(ary)/sizeof(ary[0])」を調べると、要素数1と返される。
そうだ、この引数は先頭のアドレスを受け取っているだけだった。
引数をもうひとつ増やすか。