欢迎访问宙启技术站
智能推送

使用Haskell进行快速排序算法实现

发布时间:2023-12-10 10:13:17

快速排序(Quick sort)是一种常用的排序算法,也是一种分治算法。它的基本思想是通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小。然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。

下面是使用Haskell语言实现快速排序算法的代码:

quickSort :: Ord a => [a] -> [a]
quickSort [] = []  -- 空列表直接返回
quickSort (x:xs) =
    let smallerSorted = quickSort [a | a <- xs, a <= x]  -- 小于等于      个元素的子列表
        biggerSorted  = quickSort [a | a <- xs, a > x]   -- 大于      个元素的子列表
    in  smallerSorted ++ [x] ++ biggerSorted  -- 将排序好的子列表与      个元素合并

上述代码定义了一个名为quickSort的函数,它接受一个[a]类型的列表,并返回一个排序好的列表。通过模式匹配,我们首先处理空列表的情况,直接返回空列表。对于非空列表,我们选择 个元素作为基准元素,将列表分成两个子列表:小于等于基准元素的子列表和大于基准元素的子列表。然后,分别对这两个子列表递归地进行快速排序,并将它们与基准元素按顺序合并。

下面是一个使用例子,展示了如何使用quickSort函数对一个整数列表进行排序:

main :: IO ()
main = do
    let inputList = [9, 5, 2, 7, 10, 1, 8, 3, 6, 4]
        sortedList = quickSort inputList
    putStrLn ("Input list: " ++ show inputList)
    putStrLn ("Sorted list: " ++ show sortedList)

在上述示例中,我们首先定义了一个整数列表inputList,然后使用quickSort函数对其进行排序,将结果保存在sortedList中。最后,我们使用putStrLn函数将原始列表和排序后的列表打印出来。

运行以上代码,将得到如下输出:

Input list: [9,5,2,7,10,1,8,3,6,4]
Sorted list: [1,2,3,4,5,6,7,8,9,10]

以上就是使用Haskell实现快速排序算法的示例。通过这个例子,你可以了解如何使用Haskell语言进行快速排序的实现,并对该算法有一个清晰的理解。