Прежде всего, извините, мой английский, это не мой родной язык.моя функция бинарного поиска не работает должным образом
Привет всем, у меня проблема с функцией бинарного поиска. Мне нужно сделать рекурсивную функцию (с использованием языка C) двоичного поиска, с помощью логического типа, вот это:
bool binary_search(int x, int array[], int m, int n){
int middle=(m+n)/2;
if(m>n) return(0);
else if(x == array[middle]) return(1);
else if(x < array[middle]) return(binary_search(x, array, m, middle-1));
else return(binary_search(x, array, middle+1, n));
}
здесь вызов в главной функции:
printf("type the element to search: \n"); scanf("%d", &x);
if(binary_search(x, A, 0,dim-1)) printf("Found!\n");
else printf("Not found!\n");
Проблема is, он всегда возвращает «не найден», даже если элемент не находится в массиве. Я попытался изменить логику внутри команды if, но просто сделал все результаты «найденными». Если кто-то может помочь, я буду рад.
ОБНОВЛЕНИЕ: Я изменил «=» проблемы, но выход все-таки не так, я напечатал вывод функции, и это всегда равна нулю
Этот 'x = массив [средний]' явно не то, что вы хотите. Вам может понадобиться 'x == array [средний]' –