File tree Expand file tree Collapse file tree 1 file changed +12
-11
lines changed
exercises/practice/binary-search/.meta/src Expand file tree Collapse file tree 1 file changed +12
-11
lines changed Original file line number Diff line number Diff line change 1
1
(ns binary-search )
2
2
3
- (defn middle [alist]
4
- (-> alist (count ) (quot 2 )))
5
-
6
3
(defn search-for
7
- [elem alist]
8
- (let [middle (middle alist)
9
- cur-elem (nth alist middle)]
10
- (cond
11
- (= cur-elem elem) middle
12
- (or (= middle (count alist)) (zero? middle)) (throw (Exception. (format " %s not found in list" elem)))
13
- (< cur-elem elem) (+ middle (search-for elem (drop middle alist)))
14
- (> cur-elem elem) (search-for elem (take middle alist)))))
4
+ [n coll]
5
+ (let [coll (vec coll)]
6
+ (loop [low-idx 0
7
+ high-idx (dec (count coll))]
8
+ (if (> low-idx high-idx)
9
+ (throw (Exception. " not found" ))
10
+ (let [mid-index (quot (+ high-idx low-idx) 2 )
11
+ mid-item (get coll mid-index)]
12
+ (cond
13
+ (= n mid-item) mid-index
14
+ (> mid-item n) (recur low-idx (dec mid-index))
15
+ :else (recur (inc mid-index) high-idx)))))))
You can’t perform that action at this time.
0 commit comments