我无法在网上的任何地方找到我的代码,所以你能告诉我为什么或为什么函数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)