Quickselect algorithm: Difference between revisions

m
→‎{{header|Haskell}}: Applied hlint, hindent
m (added a category)
m (→‎{{header|Haskell}}: Applied hlint, hindent)
Line 1,085:
<lang haskell>import Data.List (partition)
 
quickselect :: Ord a => Int -> [a] -> a
:: Ord a
quickselect k (x:xs) | k < l = quickselect k ys
=> Int -> [a] -> a
| k > l = quickselect (k-l-1) zs
quickselect k (x:xs)
| otherwise = x
where| (ys,k zs)< l = partitionquickselect (<k x) xsys
| k > l = quickselect (k - l =- length1) yszs
| otherwise = x
where
(ys, zs) = partition (< x) xs
l = length ys
 
main :: IO ()
main = do
let v = [9, 8, 7, 6, 5, 0, 1, 2, 3, 4]
print $ map (\i -> `quickselect i` v) [0 .. length v - 1]</lang>
{{out}}
<pre>[0,1,2,3,4,5,6,7,8,9]</pre>
9,655

edits