Я почти уверен, что это что-то простое, но я не могу для жизни понять это. Весь этот код предназначен для печати меню, которое запрашивает у пользователей размер и размер массива, затем заполняет его случайными числами, сортирует его по возрастанию и убыванию, печатает массив, а также позволяет пользователю использовать двоичный поиск или последовательный поиск. Я знаю, что линейный поиск намного эффективнее для того, что мы должны делать, но инструктор настаивает на двоичном поиске. У меня есть работа по бинарному поиску, и он печатает правильный результат, но с 1 на его конце (то есть позиция 14 появляется как 141). вот переключатель так, что вызывает функцию:Двоичный поиск продолжает добавлять 1 в конец вывода
case 7:
int num, result;
cout << "Please enter an int to search for" << endl;
cin >> num;
result = binarySearch(Array1, num, 0, size);
cout << num << "was found at position " << result;
break;
}
}
здесь функция:
int binarySearch(int arr[], int key, int first, int last)
{
while (first <= last)
{
int mid = (last + first)/2;
if (key < arr[mid])
{
last = mid - 1;
}
else if (key > arr[mid])
{
first = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
вы не делаете 'соиЬ << епсИ.. 'так что дополнительный '1' приходит откуда-то еще. – Roddy
Поскольку 1 печатается независимо от того, что вы поиск, маловероятно, что логика двоичного поиска имеет проблему. Метод binarySearch является правильным. Можете ли вы опубликовать, что происходит после условия переключения? –
Вот почему вы должны попытаться составить краткое тестовое задание, прежде чем задавать вопрос. Вы обнаружите то, что, по вашему мнению, проблема, не проблема. – Cogwheel