Why do you call qsort* inside of partify? I do not really grasp your logic behind this.
On Tue, Dec 28, 2010 at 8:20 PM, Baishampayan Ghose <b.gh...@gmail.com> wrote: > Hello, > > I tried writing a naive implementation of quicksort using an > accumulator. Right now, the code is stack-consuming and returns a > stackoverflowerror on large lists. Is there any way to prevent it from > consuming stack with some changes? The code is as follows - > > (declare qsort qsort* partify) > > (defn partify > [item coll [less equal greater] acc] > (if (empty? coll) > (qsort* less (concat equal (qsort* greater acc))) > (let [[head & tail] coll] > (cond > (< head item) (recur item tail [(cons head less) equal greater] acc) > (> head item) (recur item tail [less equal (cons head greater)] acc) > :else (recur item tail [less (cons head equal) greater] acc))))) > > (defn qsort* > [coll acc] > (if-let [coll (seq coll)] > (partify (first coll) (rest coll) [[] [(first coll)] []] acc) > acc)) > > (defn qsort > "Perform Quicksort, with apologies to C.A.R. Hoare" > [coll] > (if-let [coll (seq coll)] > (qsort* coll []) > [])) > > Regards, > BG > > -- > Baishampayan Ghose > b.ghose at gmail.com > > -- > 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 -- Petr Gladkikh -- 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