Где ошибка в моем коде для выполнения бинарного поиска?
Я писал код для алгоритма бинарного поиска.
Код:
#include "cs50.h"
int main(void) {
int n = GetInt();
int value = GetInt();
int values[n];
for (int i = 0; i < n; i++) {
printf("Put in number %i ", i + 1);
values[i] = GetInt();
}
int mid = (n - 1) / 2;
int en = 0;
int ex = n - 1;
for (int i = 0, xt = i + 1; i < xt; i++) {
if (value > values[mid]) {
en = mid;
mid = (en + ex) / 2;
}
else if (value < values[mid]) {
ex = mid;
mid = (en + ex) / 2;
}
else if (value == values[mid]) {
printf("found");
break;
} else {
printf("not found");
break;
}
}
}
Но это работает только тогда, когда искомое значение находится где-то посередине.
Не удается, когда:
значение, которое будет найдено, является первым или последним.значение, которое нужно найти, не входит во введенные значения.Я действительно не могу понять ошибку.