证逆序数反着数结果也一样,及求按从大到小的标准排列的结果

标签:
杂谈 |
http://s11/mw690/001KY514zy7j1xvyUaKfa&690
以上是逆序数的例题,上面可以看出,是把逆序数按从小到大的顺序排的,且每个数是与它前面的数做比较,其实每个数与它后面的数作比较也是一样的,我们就来证一下
以上是逆序数的例题,上面可以看出,是把逆序数按从小到大的顺序排的,且每个数是与它前面的数做比较,其实每个数与它后面的数作比较也是一样的,我们就来证一下
还是上面的例题,这次是与他后面的数做比较
3排在首位,后面有2个比他小的数,逆序数为2
2的后有一个比他小的数,逆序数为1
5是最大数,后面有1个比他小的数,逆序数为1
1是最小数,逆序数为0
4是排在最后,逆序数为0
所以这个排列的逆序数为2+1+1+1+0+0=5
怎么样,每个数与后面的数比较也是5吧,这是为什么,证明呀:
假设L为数列W中的一个数,他前面有N个数,后面有M个数,如果按与前面的数做比较,则L与他前面的数比较了N次,之后当数他后面的数的逆序时,后面那M个数与挨个与他比较,所以他总共比较了N+M-1次
如果按与后面的数比较,先算他前面的N个数的逆序,则L前被与他前面的N个数比较,轮到L时,他在与后面的M个数比较,还是比较了N+M-1次
也就是说,不管从前面数还是从后面数,每个数都比较了N+M-1次,都与除他以外的数比了个遍,然后计算逆序数,再把所有的逆序数的和加起来,所以不管从前数还是从后数,都是把每个数与剩下的数比了一遍,然后计算逆序数,所以结果是一样的
再来看按从大到小的标准列排的情况,先这样想,排列12345按小到大的标准,逆序数为0,但是按从大到小的标准,逆序数为0+1+2+3+4=10,也就是说如果一个有n个数的完全按标准从小到大排列的排列,被按从大到小的标准算,则其逆序数为0+1+2+3+...+(n-1)=n*(n-1)/2
所以如果一个逆序数为A的排列,被按从大到小的顺序算逆序数,则其逆序数为n*(n-1)/2-A
为什么呢,假设这个逆序数是按从小到大的标准算的,它的值为A,而逆序数的值在0和n*(n-1)/2之间,完全从小到大排的是0,完全从大到小排的是n*(n-1)/2,当一个按从小到大的标准计算逆序数的A要被按从大到小的标准重新计算时,原先产生逆序数的会不产生逆序数,原先不产生逆序数的会产生逆序数,比如M和N,M>N,M排在N前,按从小到大,则产生一个逆序数,按从大到小,则不产生逆序数,当求一个排列的元素的逆序数时,则要与他前面的每一个元素比较,所以
如果计算逆序数时,一个数前面的最大逆序数为他前面的所有数的个数,设为X吧,则除非是完全按从大到小排列,否则实际的逆序数要小于这个X,当按从小到大的标准排列时,则产生了逆序数W吧,当换成从大到小的标准排列,则以前的逆序数X-W,因为以前产生逆序数的改为不产生逆序数,以前不产生逆序数的改为产生逆序数,所以计算每个元素的前面的逆序数则为X1-W1+X2-W2+X3-W3+。。。。Xn-1+Wn-1=(X1+X2+X3+Xn-1)-(W1+W2+W3+Wn-1),又因为X1+X2+X3+Xn-1为每个数极限状态下的逆序数,就是每个数前面所有的元素都算成逆序数,也就是像54321这种情况,既完全从大到小的排列时每个数的逆序数,所以为n*(n-1)/2,(W1+W2+W3+Wn-1)为某个具体的元素产生的逆序数,所以为A,所以
如果一个逆序数为A的排列,被按从大到小的顺序算逆序数,则其逆序数为n*(n-1)/2-A