编写一个递归函数,按升序添加元素

时间:2016-11-05 00:11:43

标签: haskell recursion functional-programming higher-order-functions

我必须编写递归函数insertSort。给出一份清单 类型x和类型x的元素将元素插入到列表中 列表按升序排列。允许重复。输入 列表将被正确排序。

预期产出:

 insertSort [] 3 -> [3]
    insertSort "btt" ’u’ -> "bttu"
    foldl insertSort [] [] -> []
    foldl insertSort [] [3,1,5,5,3,0,1,8,4] ->
    [0,1,1,3,3,4,5,5,8]

我是haskell的新手。我知道如何添加元素,但我不知道如何按升序添加。请有人帮助我

1 个答案:

答案 0 :(得分:2)

由于这可能是作业,我只是给出提示。从签名

开始
isort :: Ord  a =>  [a] -> a -> [a]

基本案例是微不足道的

isort [] x = [x]

递归案例

isort (x:xs) y | y <= x =    -- what should happen here since it's at right place
               | otherwise = -- or here, when it's not?