在数列中按顺序
后面的数比1小的数有0个;
后面的数比3小的数有1个,为2;
后面的数比5小的数有2个,为4,2;
...
后面的数比2n-1小的数有n-1个,为2n-2,...4,2;
后面的数比2n小的数有n-1个,为2n-2,...4,2;
后面的数比2n-2小的数有n-2个,为2n-4,...4,2;
...
后面的数比4小的数有1个,为2;
后面的数比2小的数有0个.
所以逆序数为0+1+2+...+n-1+n-1+...+1+0=2*(1+n-1)*(n-1)/2=n(n-1)
逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。
扩展资料:
计算:
计算一个排列的逆序数的直接方法是逐个枚举逆序,同时统计个数。例如在序列{2,4,3,1}中,逆序依次为(2,1),(4,3),(4,1),(3,1),因此该序列的逆序数为4。
VisualBasic 6.0编写的示例使用的就是直接计数的方法,函数NiXushu返回一个字符串的逆序数。
PrivateFunctionNiXuShu(ByVallAsString)AsLong'逆序数计算
DimiAsInteger,jAsInteger,cAsLong
Dimn()AsInteger
ReDimn(Len(l))
Fori=1ToLen(l)
n(i)=Val(Mid(l,i,1))
Forj=1Toi-1
Ifn(i) c=c+1 EndIf Nextj Nexti NiXuShu=c EndFunction