Mee*_*eem 4 mergesort haskell list
我想知道如何将 3 个列表合并为一个列表。
这是合并两个列表
merge :: Ord a => [a] -> [a] -> [a]
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys) | x <= y = x:merge xs (y:ys)
| otherwise = y:merge (x:xs) ys
Run Code Online (Sandbox Code Playgroud)
如果我想合并三个列表怎么办?
您的merge
函数已经可以合并两个列表,并且由于它是一个二元关联操作,您可以执行以下操作:
list1 `merge` (list2 `merge` list3)
Run Code Online (Sandbox Code Playgroud)
或者更一般地说,如果您想合并任意数量的列表:
mergeAll :: Ord a => [[a]] -> [a]
mergeAll = foldl merge []
Run Code Online (Sandbox Code Playgroud)
维基百科对Folding有很好的解释。
归档时间: |
|
查看次数: |
126 次 |
最近记录: |