【问题标题】:write a recursive function that adds elements in ascending order [closed]编写一个递归函数,以升序添加元素[关闭]
【发布时间】:2017-03-18 22:07:55
【问题描述】:

我要写递归函数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的新手。我知道如何添加元素,但我不知道如何按升序添加。请有人帮助我

【问题讨论】:

  • 请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。 stackoverflow.com/help/on-topic
  • 分解问题; a,列表中的最小值是多少? b,给定一个值,它在列表中的索引是什么? c,给定一个列表中的索引,如何创建另一个列表,其中包含除该索引处的项目之外的所有内容?
  • 你写的函数不是插入sort,而是insertion。你应该叫它insert

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


【解决方案1】:

由于这可能是家庭作业,我将给出提示。从签名开始

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?

【讨论】:

    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多