Wo befindet sich der Fehler in meinem Code, eine binäre Suche durchzuführen?

Ich habe Code für einen binären Suchalgorithmus geschrieben.

Code

#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;
        }
    }
}

Aber es funktioniert nur, wenn der zu findende Wert irgendwo in der Mitte liegt.

Es schlägt fehl, wenn:

er zu findende Wert ist der erste oder letzter zu findende Wert ist nicht in den eingegebenen Werten enthalte

Ich kann den Fehler wirklich nicht herausfinden.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage