为什么Insertion Sort不需要交换操作?

时间:2013-12-09 20:04:01

标签: java algorithm sorting swap

所以我正在学习Java,我问自己,为什么Insertion-Sort方法不需要使用交换操作?据我所知,元素被交换,因此在这种排序算法中使用交换操作不是很有用吗?

正如我所说,我是新手,但我试着了解这些算法的背景,为什么它们实际上是这样的

很高兴获得一些见解:) 乙

2 个答案:

答案 0 :(得分:0)

维基百科的article for Insertion sort

  

每次迭代,插入排序都会从输入中删除一个元素   数据,在排序列表中查找它所属的位置,以及   把它插入那里。它重复直到没有输入元素。 [...]如果   更小,它在排序列表中找到正确的位置,移位   所有较大的值最多可以创建一个空格,并插入其中   正确的位置。

您可以将此转变视为极端交换。实际发生的是值存储在占位符中并与其他值进行检查。如果这些值较小,则只需移动它们,即。替换列表/数组中的上一个(或下一个)位置。然后将占位符的值放在元素移位的位置。

答案 1 :(得分:0)

插入排序不执行交换。它通过移动顺序列表中的元素来执行插入,以便为正在插入的元素腾出空间。

这就是为什么它是O(N ^ 2)算法:对于N中的每个元素,可以有O(N)个移位。