And for reference, here is again stefan's "stable" quicksort from his
earlier post.

"
sort [] = []
sort l@(x:_) = filter (<x) l ++ filter (==x) l ++ filter (>x) l

(A stable quicksort, btw)
"

This is the code whose legitimacy I am requesting confirmation of.

2007/4/13, Thomas Hartman <[EMAIL PROTECTED]>:
> > You may be missing a few recursive calls there :-)
>
> Indeed.

I'm confused.

Is this a legitimate stable quicksort, or not? (My guess is, it is
indeed legit as written.)

This was also the first I have heard of stability as a sort property.

http://perldoc.perl.org/sort.html may shed some light on this...

"A stable sort means that for records that compare equal, the original
input ordering is preserved. Mergesort is stable, quicksort is not. "

Is this description a fair characterization of stability for the
current discussion?

I'm a bit confused but if I understand correctly sort from the prelude
is non stable quicksort, which has O(k n^2) as the worst case, whereas
stable quicksort has O( k* log n + n).

non-stable quicksort is just sort from the prelude:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

If any in the above was incorrect, please holler.

2007/4/12, Stefan O'Rear <[EMAIL PROTECTED]>:
> On Wed, Apr 11, 2007 at 09:20:12PM -0700, Tim Chevalier wrote:
> > On 4/11/07, Stefan O'Rear <[EMAIL PROTECTED]> wrote:
> > >
> > >If you want to be really explicit about it, here is a sort that will
> > >work:
> > >
> > >sort [] = []
> > >sort l@(x:_) = filter (<x) l ++ filter (==x) l ++ filter (>x) l
> > >
> > >(A stable quicksort, btw)
> >
> > You may be missing a few recursive calls there :-)
>
> Indeed.
>
> Stefan
> _______________________________________________
> Haskell-Cafe mailing list
> [EMAIL PROTECTED]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>

_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to