📜  haskell 中的快速排序(1)

📅  最后修改于: 2023-12-03 15:01:06.864000             🧑  作者: Mango

Haskell中的快速排序

快速排序(QuickSort)是一种常见的排序算法,也是Haskell中优秀的排序算法之一。Haskell中的快速排序采用了分治的思想,通过分割和递归地排序两个子序列来将一个序列排序。

实现快速排序

下面是Haskell中的快速排序实现:

quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (pivot:rest) = (quicksort less) ++ [pivot] ++ (quicksort greater)
  where less = filter (<pivot) rest
        greater = filter (>=pivot) rest

该实现使用了Haskell的高级函数filter来筛选出pivot左右两侧的集合。其中,less中存储的是小于pivot的元素,greater中存储的是大于等于pivot的元素。然后,将less、pivot、greater递归地传给quicksort函数,最终将结果拼接起来。

示例

下面是一个使用Haskell中的快速排序对列表进行排序的示例:

main = do
  let nums = [4, 2, 8, 6, 1, 5, 7, 3]
  putStrLn "Original List: "
  print nums
  putStrLn "Sorted List: "
  print (quicksort nums)

输出结果:

Original List:
[4,2,8,6,1,5,7,3]
Sorted List:
[1,2,3,4,5,6,7,8]
总结

Haskell中的快速排序是一种简单而高效的排序算法。它借助了Haskell的高级函数filter来简化代码,使得实现起来更加容易。利用Haskell中的快速排序,我们可以在短时间内对任意长度的列表进行排序。