Ich habe versucht, den ganzen Tag herauszufinden, und es scheint nicht zu funktionieren. Warum kommt der binäre Such Arbeit, wenn ich Eingabe der Feldlänge in Hand, aber wenn ich die manuelle Eingabe tauschen für:Binäre Suche Int Array Größe Problem
int max = sizeof(list)/sizeof(list[0]);
es scheint nicht zu funktionieren. Wenn ich zum Beispiel nach einer 2 in einem 11-Element-Array von 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 suchen möchte, kann es 2 nicht finden. Aber wenn ich int ändere, min = 11. Es kann 2. Hier ist die Funktion binäre Art finden:
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);
}
jede Hilfe sehr zu schätzen wissen.
Wie ist 'liste' definiert? 'int * list;'? –
Lernen Sie, Ihren Code zu debuggen. Drucken Sie den Wert von min und prüfen Sie, ob es korrekt ist oder nicht. – user31264
Wenn ich meinen Code debuggen sagt es max = 2, aber wenn die Array-Länge 11 ist, wie int max = sizeof (Liste)/sizeof (Liste [0]); 2 bekommen? –