使用插入排序计算比较

时间:2016-12-05 22:26:28

标签: java sorting selection insertion

我的任务是在排序数组时计算总比较。 给定整数数组{8,2,1,4,3,5},我从左边的第二个元素开始,将它与第一个元素进行比较,切换它们,然后将第三个元素与前两个元素进行比较,等等on,以确定每个元素应位于何处。

我正在计算总共15个比较,但正确的比较计数是10。 我知道通过选择排序对这个数组进行排序是15个比较,那么在这个例子中使用插入排序时,比较计数的方式和原因有何不同?

1 个答案:

答案 0 :(得分:0)

您对插入排序的工作方式的理解是错误的。

将此伪代码用于插入排序:

mark first element as sorted
for each unsorted element
  'extract' the element
  for i = lastSortedIndex to 0
    if currentSortedElement > extractedElement
      move sorted element to the right by 1
    else: insert extracted element

初始数组:[8, 2, 1, 4, 3, 5]

比较1:2 < 8数组:[2, 8, 1, 4, 3, 5]

比较2:1 < 8数组:[2, 1, 8, 4, 3, 5]

比较3:1 < 2数组:[1, 2, 8, 4, 3, 5]

比较4:4 < 8数组:[1, 2, 4, 8, 3, 5]

比较5:4 > 2数组:[1, 2, 4, 8, 3, 5]

比较6:3 < 8数组:[1, 2, 4, 3, 8, 5]

比较7:3 < 4数组:[1, 2, 3, 4, 8, 5]

比较8:3 > 2数组:[1, 2, 3, 4, 8, 5]

比较9:5 < 8数组:[1, 2, 3, 4, 5, 8]

比较10:5 > 4数组:[1, 2, 3, 4, 5, 8]

排序!