问题a
逆序对为(2,1),(3,1),(8,6),(8,1),(6,1)
问题b
当这个数组按照从大到小排序时,逆序对最多为
s=(n−1)(1+(n−1))2=n(n−1)2
问题c
应当成正比关系
插入排序的时间开销主要在数组的移动上,每移动一次就意味着将一个逆序对变为顺序对,故逆序对的个数与移动次数成正比
问题d
我们考虑合并步骤中的L数组和R数组。
若我们已经统计出L中的逆序对为l个,R中的逆序对r个,我们只需要统计出一个在L和一个在R组成的逆序对,由于R中数组下标一定大于L的,所以我们只需统计出这样的a,b(a>b,a在L中,b在R中)。
注意在合并时,若L中一个元素放置入原数组,则该元素一定大于之前已经填入的所有R中的元素。故我们只需加上此时已经进入原数组的R中元素个数即可。
具体实现戳这里