ID
это да, но это же не обязательное условие
Size: a a a
ID
ΑZ
ID
ID
import qualified Data.Vector.Generic as V
import qualified Data.Vector.Generic.Mutable as M
qsort :: (V.Vector v a, Ord a) => v a -> v a
qsort = V.modify go where
go xs | M.length xs < 2 = return ()
| otherwise = do
p <- M.read xs (M.length xs `div` 2)
j <- M.unstablePartition (< p) xs
let (l, pr) = M.splitAt j xs
k <- M.unstablePartition (== p) pr
go l; go $ M.drop k pr
ΑZ
p
p
ΑZ
p
p
p
ΑZ
ΑZ
T1
ΑZ
T1
ΑZ
T1
PP
PP