14 lines
399 B
Haskell
14 lines
399 B
Haskell
import Data.List (partition)
|
|
|
|
quickselect :: Ord a => Int -> [a] -> a
|
|
quickselect k (x:xs) | k < l = quickselect k ys
|
|
| k > l = quickselect (k-l-1) zs
|
|
| 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]
|