Hello,
Attached is a [list-quicksort] abstraction, which sorts lists of
numbers using (you guessed it!) a quicksort algorithm... it should
function as a drop-in replacement for the recent [list-*sort]
abstractions, and it should be quite a bit faster than [list-sort],
and faster than [list-shellsort] for lists of maybe 50 or more. It
will not perform as well as [list-shellsort] for lists that have a ton
of duplicates, and it uses more memory than the shellsort.
I believe there are faster sorting algorithms which begin with
quicksort and then move to another kind of sort for short partitions
or if the partitioning gets too deep, but I wanted to do a pure
quicksort for simplicity.
Anything significantly faster would probably need an external, but
like I said before I love this kind of thing just for the constrained
problem solving, and for the pedagogical value for anyone who uses
list-abs. I don't think we "need" a heapsort or anything else, but
I'd be happy to put one together in a couple of weeks.
There were a few persistent bugs in this one that I think I've ironed
out, but I'd like to have one or two people try to break it. =o)
Thanks,
Matt