RosettaCodeData/Task/Binary-search/Scheme/binary-search.ss
Ingy döt Net 86c034bb8b new files
2013-04-10 12:38:42 -07:00

11 lines
426 B
Scheme

(define (binary-search value vector)
(let helper ((low 0)
(high (- (vector-length vector) 1)))
(if (< high low)
#f
(let ((middle (quotient (+ low high) 2)))
(cond ((> (vector-ref vector middle) value)
(helper low (- middle 1)))
((< (vector-ref vector middle) value)
(helper (+ middle 1) high))
(else middle))))))