小编use*_*376的帖子

这是Haskell中正确实现的mergesort吗?

我无法在网上的任何地方找到我的代码,所以你能告诉我为什么或为什么函数myMergeSort不是一个mergesort?我知道我的函数myMergeSort排序,但我不确定它是否真的使用mergesort算法进行排序,或者它是否是一个不同的算法.我几天前刚开始使用Haskell.

merge xs [] = xs
merge [] ys = ys
merge (x : xs) (y : ys)
    | x <= y = x : merge xs (y : ys)
    | otherwise = y : merge (x : xs) ys

myMergeSort :: [Int] -> [Int]
myMergeSort [] = []
myMergeSort (x:[]) = [x]
myMergeSort (x:xs) = foldl merge [] (map (\x -> [x]) (x:xs))
Run Code Online (Sandbox Code Playgroud)

我对合并功能没有任何疑问.

以下函数mergeSortOfficial是我们提供的解决方案,我理解它但不确定我是否正确地在我的函数myMergeSort中实现mergesort算法.

官方解决方案 - 实施:

mergeSortOfficial …
Run Code Online (Sandbox Code Playgroud)

sorting algorithm mergesort haskell functional-programming

2
推荐指数
2
解决办法
711
查看次数