Binäre Suche in Array-Ausgabe mit Fortran

Ich verwende das Buch Outline of Programming With Fortran 77 von Schaum, und es gibt ein Beispiel für die binäre Suche mit der Methode der Wertegruppen in Klammern. Hier ist zunächst der Code:

    INTEGER X(100)
    INTEGER RANGE
    INTEGER START , FINISH

    PRINT *, 'Number of values ?'
    READ *, N
    DO 10 I = 1, N
        READ *, X(I)
    END DO 

    PRINT *, 'Enter Value'
    READ *, VAL

    START =  1 
    FINISH = N
    RANGE = FINISH - START 
    MID = (START + FINISH) /2

    DO WHILE( X(MID) .NE. VAL .AND. RANGE .NE. 0)
      IF (VAL .GT. X(MID))THEN
        START = MID 
      ELSE 
        FINISH = MID
      END IF
      RANGE = FINISH - START
      MID = (START + FINISH)/2
    END DO 

    IF( X(MID) .NE. VAL) THEN
      PRINT *, VAL, 'NOT FOUND'
    ELSE
      PRINT *, 'VALUE AT' , MID
    END IF
    END

Das Problem ist, wenn ich 7 Werte wie ein Array eingebe

2 | 9 | 11 | 23 | 49 | 55 | 66

Und suchen Sie zum Beispiel nach 66, wenn

MID = 5

wird der neue MID für die nächste Schleife zu 6. Aber wenn es 6 ist, kann es nicht für die nächste Schleife erhöht werden, weil

MITTE = (START + ENDE) / 2 = (6 + 7) / 2 = 6

Wo es 7 sein sollte natürlich.

Es läuft noch am 6. Und mein Programm gibt mir natürlich nie eine Ausgabe. Was soll ich hier machen

Antworten auf die Frage(1)

Ihre Antwort auf die Frage