算是一道模拟题吧,,,此题就逆序数不用归并排序之类的,而是用双层for循环模拟求解,,因为题意中要求任意两个数交换位置,所以只需在双层for循环中模拟两个数交换即可,在模拟的过程中,不需要准确的求出模拟之后的逆序数,只需要考虑逆序数的变化量为多少,最后,求出变化量最小的,用最初的逆序数求得最后结果。。。
其中模拟两个数交换之后逆序数的变化量解法:
如下:
有
a,b,c,d,e,f,g,h,i,g,k,l,m.....;
一系列数。
假设我们求交换 d 和 l 的数,其逆序数的变化量。
数列将变为:
a,b,c,l,e,f,g,h,i,g......
阅读全文