>> 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 -
>
> You don't say what your test data is, but pretty much any quicksort
> implementation will have some nasty test cases for which its memory
> usage is nasty and its performance is worse. Given that this is a
> simple implementation, data that is already sorted is the degenerate
> case.
>
> I don't think you can keep it from using any stack - a non-recursive
> implementation would just have to maintain it's own stack state. You
> can do some things to make it use less stack, though.

This is just a toy implementation, not something real :) I am
interested in learning about making this code truly tail recursive
and/or lazy. Identical implementations on Haskell work just fine, so I
wrote this one for some testing...

When you try using some large numbers like 10 million, it blows the
stack. A completely lazy solution is possible in Clojure, as shown in
"The Joy of Clojure".

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

Reply via email to