32 lines
631 B
Text
32 lines
631 B
Text
REAL :: n=10, array(n)
|
|
|
|
array = NINT( RAN(n) )
|
|
SORT(Vector=array, Sorted=array)
|
|
x = NINT( RAN(n) )
|
|
|
|
idx = binarySearch( array, x )
|
|
WRITE(ClipBoard) x, "has position ", idx, "in ", array
|
|
END
|
|
|
|
FUNCTION binarySearch(A, value)
|
|
REAL :: A(1), value
|
|
|
|
low = 1
|
|
high = LEN(A)
|
|
DO i = 1, high
|
|
IF( low > high) THEN
|
|
binarySearch = 0
|
|
RETURN
|
|
ELSE
|
|
mid = INT( (low + high) / 2 )
|
|
IF( A(mid) > value) THEN
|
|
high = mid - 1
|
|
ELSEIF( A(mid) < value ) THEN
|
|
low = mid + 1
|
|
ELSE
|
|
binarySearch = mid
|
|
RETURN
|
|
ENDIF
|
|
ENDIF
|
|
ENDDO
|
|
END
|