Here's the simplest way to adapt your code so that it won't blow the
stack.  Just shuffle the input list first:

(defn quicksort [l]
  (letfn [(qsort [[pivot & xs]]
                 (when pivot
                   (let [smaller #(< % pivot)]
                     (lazy-cat (qsort (filter smaller xs))
                               [pivot]
                               (qsort (remove smaller xs))))))]
         (qsort (shuffle l))))

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to