正如他们所说,"真正的快速排序就地排序".所以标准的短Haskell代码用于quicksort,
quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
where
lesser = filter (< p) xs
greater = filter (>= p) xs
Run Code Online (Sandbox Code Playgroud)
毕竟,它描述的算法/计算过程是什么?
肯定不是Tony Hoare设计的,缺乏最明确的功能,就地分区算法.
(答案可能是众所周知的,但在SO上还没有).
纠正:这个问题实际上是重复的:毕竟在SO 上已知答案:cf.伪快速排序时间复杂度.