簡體   English   中英

如何將合並列表按升序排序?

[英]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

我已經開始工作了,但是現在我需要按升序對它們進行排序。

您只需要比較xy並確定要先添加到結果中。 請注意,一次只能添加一個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM