假设我们交换了最初无序的元素a [i]和[i + k]

时间:2012-11-04 03:08:34

标签: java algorithm sorting

  

证明至少1次,最多2次* k - 1次倒置被移除

我不明白“反转被删除”是什么意思,我不知道从哪里开始。

1 个答案:

答案 0 :(得分:3)

如果列表为1, 3, 2, 4且已更改为1, 2, 3, 4,那么您已删除了反转。

显然,您已删除了至少1次反转,因为a[i]a[i+k]发生了故障。您最多删除2*k - 1,因为如果a[i]大于a[i+1], ... ,a[i+k-1],那么您可以修复k-1次反转。同样a[i+k]小于它下面的全部。因此,你可以获得的最多是k-1 + k-1 + 1(最后一个是我们已经计算过的那个),等于2k - 1

示例:1,10,3,4,5,6,7,8,9,2 - >切换a[2]a[10]k = 8,2现在小于10,而2也小于3-9,即7个数字。此外,10现在大于3-9,这也是7个数字,因此改进为7 + 7 + 1 = 15 = 2*8 - 1