[英]How do I sort a merged list into ascending order?
merge :: [a] -> [a] -> [a]
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys) = x : y : merge xs ys
我已經開始工作了,但是現在我需要按升序對它們進行排序。
您只需要比較x
和y
並確定要先添加到結果中。 請注意,一次只能添加一個 。 x
之后的下一個元素可能仍在y
之前。
注意:您所需要的Ord
約束,以確保<=
被定義為a
。
merge :: Ord a => [a] -> [a] -> [a]
merge xs [] = xs
merge [] ys = ys
merge xs@(x:xs') ys@(y:ys') | x <= y = x : merge xs' ys
| otherwise = y : merge xs ys'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.