私はこれを一日中考えようとしていて、それを機能させるように見えません。 なぜ二分探索作業はI手動で入力配列の長さがあれば行いますが、私はのための手動入力を入れ替えるとき:バイナリ検索Int配列サイズの問題
動作するようには思えません。たとえば、1,1,2,3,4,5,6,7,8,9,10の11要素配列で2を検索しようとすると、2を見つけることができません。しかし、int minを変更すると= 11。それは2 をここで見つけることができる機能バイナリ・ソートです:
int binarysearch(int *list, int sfor)
int min = 0;
int max = 10;
int mid = (min + max)/2;
while(min <= max)
{
if (sfor == list[mid])
{
printf("The number you are searching for is in %i place \n", mid + 1);
return 0;
}
else if (sfor < list[mid])
{
max = mid - 1;
}
else
{
min = mid + 1;
}
mid = (min + max)/2;
}
printf("Could not find number! \n");
return 1;
int main(int argc, string argv[]) // number searching for is passed through
{ // command line argument
printf("How many numbers did you want to search through? \n");
int a = GetInt(); //int a is how big should the array of numbers be
printf("What are they: \n");
int i = 0;
int b[a];
for (i = 0; i < a; i++)
{
b[i] = GetInt(); //cycles though each int of the array
}
int x = atoi(argv[1]); //converts command line argument to an int
binarysearch(b, x);
}
が大幅に任意の助けに感謝します。
'list'はどのように定義されていますか? 'int * list;'? –
コードをデバッグする方法を学びます。 minの値を出力し、それが正しいかどうかをチェックします。 – user31264
私は自分のコードをデバッグするとき、max = 2だが、配列の長さが11ならば、int max = sizeof(list)/ sizeof(list [0]); 2を得る? –