Интересное.

Oct 02, 2007 21:26


import Data.Bits

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

rnd :: Integer -> [Integer] -- для пущей тормознутости.
rnd range = concat $
zipWith (\x y -> [x,y]) (eachsame l) (reverse (eachsame (tail l)))
where
l = map (\x -> x `xor` shiftR x 1) $ [1..range]

eachsame (x:_:xs) = x:eachsame xs
eachsame xs = xs

Что интересно, получение первого элемента (head $ qs $ rnd N) имеет эмпирическую сложность O(N), подтверждающую теоретическую сложность этого метода.

Что на RSDN означает оценка 6/1? Или 82/5?

сложность быстрой сортировки, rsdn, Хаскель

Previous post Next post
Up