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