Thursday, October 27, 2011

select sort


(defn select-sort
([xs] (select-sort xs 0))

([xs start-idx]
(if (< start-idx (count xs))
(let [start-val (xs start-idx)
min-idx (select-sort xs start-idx start-idx)]
(recur (assoc (assoc xs start-idx
(xs min-idx)) min-idx start-val)
(+ 1 start-idx)))
xs))

([xs start-idx min-idx]
(if (< start-idx (count xs))
(recur xs (+ 1 start-idx)
(if (> (xs min-idx) (xs start-idx))
start-idx min-idx))
min-idx))
)

No comments:

Post a Comment