Хотя вы обнаружили, что проверка (ind > 0)
приводит к невозможности найти элементы по индексу 0
, а (ind >= 0)
предоставляет решение, давайте рассмотрим короткий тестовый пример, который проверяет, binarySearch()
находит все элементы вашегоотсортированный массив, при котором пользователю не нужно постоянно вводить или перенаправлять информацию в вашу программу.
Каждый раз, когда вы тестируете алгоритмы, предоставляет простую структуру проверки, которая проверяет все элементы, числа и т. д. без требования ввода пользователя.Возьмите ваши 9 номеров, например.Простое включение инициализированного массива и сортировка, а затем цикл по всем значениям подтвердит, работает ли binarySearch()
, как задумано.(это также не спасет вас от горя).Короткий код, выполняющий поиск по всему массиву, может быть простым:
int main (void) {
int nums[] = { 7, 4, 10, 49, 6, 12, 32, 17, 21 },
n = sizeof nums / sizeof *nums;
insertionSort (nums, n);
for (int i = 0; i < n; i++)
printf (" %2d (%s)\n", nums[i],
binarySearch (nums, n, nums[i]) >= 0 ? "found" : "not found");
}
Пример использования / Вывод
$ ./bin/bsearchtest
4 (found)
6 (found)
7 (found)
10 (found)
12 (found)
17 (found)
21 (found)
32 (found)
49 (found)
Каждый элемент теперь указан как"found"
или "not found"
и код завершается самостоятельно.