【问题标题】:Insertion Sort Algorithm, using a small array插入排序算法,使用小数组
【发布时间】:2018-05-03 15:01:26
【问题描述】:

只是想知道以下是否正确。我正在尝试使用插入排序算法来解决这个问题。我试图尝试下面的数组并想出了这些答案。请你让我知道这是否正确,如果我有正确的理解。非常感谢。

逆序排列:

15, 12, 10, 4

12, 15, 10, 4

12, 10, 15, 4

12, 10, 4, 15

10, 12, 4, 15

10, 4, 12, 15

10, 4, 12, 15 (no swap)

4, 10, 12, 15

【问题讨论】:

  • 你为什么认为你应该有那个“不交换”行?当你只是要求我们检查你的实现的输出是否正确时,你为什么用 java 来标记它?
  • 您的具体问题是什么。您之前发布过类似的问题:stackoverflow.com/questions/47310732/…。如果您只需要排序算法的有效示例,我相信您可以使用您选择的搜索引擎找到很多。
  • 我觉得这看起来不错。 (“无交换”行是为了指出 4 和 12 的顺序已经正确的事实。)但是​​不要用 java 标记它,这不是 java 问题。
  • @Stefan 这不行。第 3 和第 4(当时不应移动 4)步骤是错误的,因此,这与每种情况下的选择排序具有相同的复杂性

标签: java arrays algorithm sorting insertion


【解决方案1】:

带有 cmets 的序列:

15, 12, 10,  4    start
12, 15, 10,  4    1st outer loop  [0:1]
12, 10, 15,  4    2nd outer loop  [1:2]
10, 12, 15,  4                    [0:1]
10, 12,  4, 15    3rd outer loop  [2:3]
10,  4, 12, 15                    [1:2]
 4, 10, 12, 15                    [0:1]

【讨论】:

    【解决方案2】:

    As stated in LECTURE NOTES ON DATA STRUCTURE on page 176

    假设,您想按上图的升序对元素进行排序。 那么,

    第 1 步:将数组的第二个元素与元素进行比较 出现在它之前(在这种情况下只有第一个元素)。如果 第二个元素小于第一个元素,第二个元素是 插入第一个元素的位置。第一步之后,前两个 数组的元素将被排序。

    第 2 步:将数组的第三个元素与元素进行比较 出现在它之前(第一个和第二个元素)。如果第三个元素是 小于第一个元素,插入到第一个元素的位置 元素。如果第三个元素大于第一个元素但小于 比第二个元素,它被插入到第二个元素的位置。 如果第三个元素大于两个元素,则将其保留在 原样的位置。第二步之后,数组的前三个元素 将被排序。

    第 3 步:类似地,将数组的第四个元素与 出现在它之前的元素(第一个、第二个和第三个元素)和 应用相同的程序并将该元素插入到 适当的位置。第三步后,数组的前四个元素 将被排序。

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多