mono #6647(2008/07/02 23:10 GMT) [ Haskell ] Rating-1/1=-1.00
1 2 3 4 5 6 7 8 9 10 11 12 13
import Data.List (group,sort) main :: IO () main = print $ qsort (-1) 10 [-1,9,4,8,9,6,3,9,5,2] uniq :: Ord a => [a] -> [a] uniq ns = map head $ group $ sort ns qsort :: Integral a => a -> a -> [a] -> [a] qsort _ _ [] = [] qsort _ _ ns | length (uniq ns) == 1 = ns qsort min max ns = let mid = div (max + min) 2 in qsort min mid [y | y <- ns, y < mid] ++ qsort mid max [y | y <- ns, y >=mid ]
Rating-1/1=-1.00-0+
2 replies [ reply ]
mono #6647() [ Haskell ] Rating-1/1=-1.00
Rating-1/1=-1.00-0+
2 replies [ reply ]