求排列2n 1 2n-1 2 2n-2…n+1 n的逆序数
2个回答
展开全部
1有1个,2有2个,3有3个,……,n有n个;合计有:1+2+3+……+n=n(n+1)/2个;n+1有n-1 个,n+2有n-2个,……,2n-1有1个,合计有:1+2+3+……+(n-1)=n(n-1)/2;共有:n(n+1)/2+n(n-1)/2=n²(个)。
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。
也就是说,对于n个不同的元素,先规定各元素之间有一个标准次序(例如n个 不同的自然数,可规定从小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的实际先后次序与标准次序不同时,就说有1个逆序。一个排列中所有逆序总数叫做这个排列的逆序数。
直接计数
计算一个排列的逆序数的直接方法是逐个枚举逆序,同时统计个数。例如在序列 { 2, 4, 3, 1 } 中,逆序依次为 (2,1),(4,3),(4,1),(3,1),因此该序列的逆序数为 4。
Visual Basic 6.0 编写的示例使用的就是直接计数的方法,函数 NiXushu 返回一个字符串的逆序数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询