RosettaCodeData/Task/Binary-search/Common-Lisp/binary-search-1.lisp

15 lines
374 B
Common Lisp
Raw Permalink Normal View History

2013-04-10 16:57:12 -07:00
(defun binary-search (value array)
(let ((low 0)
(high (1- (length array))))
(do () ((< high low) nil)
2016-12-05 22:15:40 +01:00
(let ((middle (floor (+ low high) 2)))
2013-04-10 16:57:12 -07:00
(cond ((> (aref array middle) value)
(setf high (1- middle)))
((< (aref array middle) value)
(setf low (1+ middle)))
(t (return middle)))))))