Difference between revisions of "User talk:Marcelo.parrela"

From HaskellWiki
Jump to navigation Jump to search
(Quicksort - An other Implementation)
Line 13: Line 13:
 
l1' = l1++[l]
 
l1' = l1++[l]
 
l2' = l2++[l]
 
l2' = l2++[l]
  +
</pre>
  +
  +
== Quicksort - An other Implementation ==
  +
  +
<pre>
  +
-- by Marcelo Parrela (marcelo.parrela@gmail.com)
  +
quicksort' [] = []
  +
quicksort' (a:as) = quicksort' l1 ++ a : quicksort' l2
  +
where
  +
(l1,l2) = separate as a [] []
  +
  +
separate [] _ a b = (a,b)
  +
separate (l:ls) a l1 l2
  +
| l &lt;= a = separate ls a l1' l2
  +
| otherwise = separate ls a l1 l2'
  +
where
  +
l1' = l1++[l]
  +
l2' = l2++[l]
  +
 
</pre>
 
</pre>

Revision as of 12:20, 14 October 2013

-- by Marcelo Parrela (marcelo.parrela@gmail.com)
quicksort' []  = []
quicksort' (a:as) = quicksort' l1 ++ a : quicksort' l2 
    where
        (l1,l2) = separate as a [] []

        separate [] _ a b = (a,b)
        separate (l:ls) a l1 l2
            | l <= a    = separate ls a l1' l2
            | otherwise = separate ls a l1 l2'
            where
                l1' = l1++[l]
                l2' = l2++[l]

Quicksort - An other Implementation

-- by Marcelo Parrela (marcelo.parrela@gmail.com)
quicksort' []  = []
quicksort' (a:as) = quicksort' l1 ++ a : quicksort' l2 
    where
        (l1,l2) = separate as a [] []

        separate [] _ a b = (a,b)
        separate (l:ls) a l1 l2
            | l <= a    = separate ls a l1' l2
            | otherwise = separate ls a l1 l2'
            where
                l1' = l1++[l]
                l2' = l2++[l]