这个输出列表中两个最小数字的流程图有什么问题?

问题描述 投票:0回答:1

我正在参加在线课程,我想知道我在流程图作业中哪里出了问题。我得到了 66% 的分数,这表明我可能犯了一个错误。我相信我的答案是正确的,尽管我可能没有使用最有效的方法。

提示:

现在,画出一个算法的流程图(如下所述),该算法将找到集合中的两个最小值。您可以假设该集合至少有两个值,并且所有值都是不同的。

该算法的工作原理是遍历集合并跟踪迄今为止看到的两个最小值:

  • 初始化目前为止两个最小值为列表的前两个元素

  • 对于列表中的每个剩余值:如果该值小于迄今为止两个最小值中的任何一个,则替换两个中较大的值

有几种方法可以表示迄今为止看到的两个最小值,但对于此分配,请使用以下方法:

  • 将“min1”设置为集合的第一个值,将“min2”设置为第二个值

  • 接下来,查看集合中每个剩余的元素:

    • 如果元素小于“min1”且“min1”小于“min2”,

      然后将“min2”设置为该元素的值

    • 否则,如果元素小于“min1”但“min1”大于“min2”,

      然后将“min1”设置为该元素的值

    • 否则,如果元素大于“min1”且小于“min2”,

      然后将“min2”设置为该元素的值

  • 检查完所有元素后,输出“min1”和“min2”,其中包含两个最小值

我做了这个流程图:

The Flowchart

我没有获得最高分的原因可能是什么?

algorithm sorting flowchart
1个回答
0
投票

一些问题:

  • 主要问题是流程图缺少箭头:它没有定义最后一次测试时要做什么(“item>min1 AND item

  • 短语“设置...到...”以相反的含义使用。作业以正确的方式使用这个短语,例如 “将“min2”设置为该元素的值”,但在流程图中,您可以使用它,例如 “将 item 设置为 min2”。虽然我明白你的意思,但明确作业的方向很重要,通常的做法是首先提到作业的目标,然后提到要分配的。因此,在您的流程图中,它实际上应该是“将 min2 设置为 item”,或者更好的是,使用箭头,例如“min2 ← item”。

  • 流程图对空列表进行了测试。由于列表中至少有两项,因此需要注意以下几点:

    • 如果您不包含 is-empty 测试,则可以很好地表明您已仔细阅读作业。我不认为包括这个不必要的测试对你的分数不会有什么害处。

    • 包含它后,奇怪的是(双关语),当列表只有一项时没有测试。如果列表中的项目确实少于两项,则流程图不正确。

制作流程图有多种方法,正确的方法可能取决于您的课程材料。例如,在决策框(菱形)中实际提出问题并不罕见。就像“Is item”一样,传出箭头可以有标签“是”和“否”,而不是“真”和“假”。

另一条评论涉及作业中呈现的逻辑,因此不能将其视为流程图中的错误:

如果前两个测试为假,则遵循 item>min1。在底层情况下测试这个条件是多余的:它保证是正确的。因此,最后一个测试可以表示为 “Is item only”。

© www.soinside.com 2019 - 2024. All rights reserved.