Binary Array Search Example
(defun searcharr (arr low high goal) (let (root) (setq root (truncate (+ low high) 2)) (if (< high low) -1 ; arr[root] (if (string= (aref arr root) goal) root (if (string< goal (aref arr root)) (searcharr arr low (- root 1) goal) (searcharr arr (+ root 1) high goal) ) ) ) ))
>(setq myarr '#("ape" "bat" "bee" "cat" "dog" ...)) >(searcharr myarr 0 6 "bee") 1> (SEARCHARR #("ape" "bat" "bee" "cat" ...) 0 6 "bee") 2> (SEARCHARR #("ape" "bat" "bee" ...) 0 2 "bee") 3> (SEARCHARR #("ape" "bat" "bee" ...) 2 2 "bee") <3 (SEARCHARR 2) <2 (SEARCHARR 2) <1 (SEARCHARR 2) 2