任意N个不同数的逆序对平均值
在学习数据结构的时候看到了以下定理:

但是老师并没有解释,本着钻研的精神决定搞清楚为什么是这个数。
在百度 google一番之后并没有找到,决定自己试着证明。
最开始走了一些弯路,但突然灵光一闪很容易的证明了,所以特此记录
在逆序对中有一个定理,那就是如果两个排列刚好倒序那么他们的逆序数对之和为一个常数
$\frac{n(n-1))}{2}$
如 {1,2,3,4} 与 {4,3,2,1} 的逆序对前者为0 ,后者为6,和为6.
又如 {2,3,1,4} 与 {4,1,3,2} 的逆序对前者为2 后者为 4 ,和为6.
他们的和全都满足上述公式。
这一点很好证明:
在一个任意N个不同数的序列中,第i(1<i<n)大的数一共有n-i个数比它大。
例:{1,2,3,4}中 比2大的数字有{3,4} 两个(4-2)在一个任意N个不同数的互为反序的两个排列中,设前者序列中第i大数的逆序数为a(意思就是在这个数前面有a个数比它大)
那么在此序列中这个数的后面有n-i-a个数比它大(总的比它大的数= 这个数前面比它大的数+后面比它大的数的个数)。
所以将次序列反向后这个数的逆序对为n-i-a。所以两个序列逆序对之和为:
$\sum_{1}^{n}[a+(n-i-a)]
\\=\sum_{1}^{n}(n-i)
\\=\frac{n(n-1))}{2}$
有了以上两个证明,题设的结论就很容易得出了.
因为在一个任意N个不同数可以组成n的全排列个数n!个数,
互为反序的对数为
$\frac{n!}{2}$
所以总个数为
$M = \frac{n!}{2}\times \frac{n(n-1))}{2}$
平均数为
$\frac{M}{n!}=\frac{n(n-1)}{4}$
证毕!
参考文献
百度百科.逆序数. http://baike.baidu.com/
任意N个不同数的逆序对平均值的更多相关文章
- [BZOJ4989][Usaco2017 Feb]Why Did the Cow Cross the Road 树状数组维护逆序对
4989: [Usaco2017 Feb]Why Did the Cow Cross the Road Time Limit: 10 Sec Memory Limit: 256 MBSubmit: ...
- Ultra-QuickSort——[归并排序、分治求逆序对]
Description In this problem, you have to analyze a particular sorting algorithm. The algorithm proce ...
- BZOJ2431_逆序对数列_KEY
转自YXDs 题目传送门 不知道今天是怎么了,可能是空调吹多了吧,一直不在状态,连递推题我都做不来了--(扎Zn了老Fe--) 然而,不管环境如何恶劣,我们仍要努力学习,为了自己的明天而奋斗.(说的好 ...
- SGU180(树状数组,逆序对,离散)
Inversions time limit per test: 0.25 sec. memory limit per test: 4096 KB input: standard output: sta ...
- 洛谷 P1908 逆序对
\[传送门qwq\] 题目描述 猫猫\(TOM\)和小老鼠\(JERRY\)最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计. 最近,\(TOM\)老猫查阅 ...
- 求逆序对常用的两种算法 ----归并排 & 树状数组
网上看了一些归并排求逆序对的文章,又看了一些树状数组的,觉得自己也写一篇试试看吧,然后本文大体也就讲个思路(没有例题),但是还是会有个程序框架的 好了下面是正文 归并排求逆序对 树状数组求逆序对 一. ...
- 求逆序对 ----归并排 & 树状数组
网上看了一些归并排求逆序对的文章,又看了一些树状数组的,觉得自己也写一篇试试看吧,然后本文大体也就讲个思路(没有例题),但是还是会有个程序框架的 好了下面是正文 归并排求逆序对 树状数组求逆序对 一. ...
- XJTUOJ wmq的队伍(树状数组求 K 元逆序对)
题目链接:http://oj.xjtuacm.com/problem/14/[分析]二元的逆序对应该都会求,可以用树状数组.这个题要求K元,我们可以看成二元的.我们先从后往前求二元逆序对数, 然后对于 ...
- 洛谷 P4280 bzoj1786 [AHOI2008]逆序对(dp)
题面 luogu bzoj 题目大意: 给你一个长度为\(n\)的序列,元素都在\(1-k\)之间,有些是\(-1\),让你把\(-1\)也变成\(1-k\)之间的数,使得逆序对最多,求逆序对最少是多 ...
随机推荐
- 团队DevOps实践之一
团队DevOps实践之一 ------------------------------------------------------------------ 今天先到这儿,希望对您技术领导力, 企业 ...
- 关于ORACLE的各种操作~持续汇总~
增.删.改: 增加所有 INSERT INTO 表名 VALUES(序列名.NEXTVAL,'值1','值2','值3','值4','值5'); 指定增加 INSERT INTO 表名(字段1,字段2 ...
- Python之路【第五篇】:Python基础之文件处理
阅读目录 一.文件操作 1.介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操 ...
- idapython import 'site' failed
打开IDA出现这个错误提示,问题根源是IDA找不到python,安装2.7版本的python并设置%PYTHONHOME%变量为python安装目录就可以了 如果已经安装了python可以在命令行下用 ...
- Java相关面试题总结+答案(二)
[容器] 18. Java 容器都有哪些? 19. Collection 和 Collections 有什么区别? Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法, ...
- 从零开始搭建运维体系 - ansible
从零开始搭建运维体系 - ansible 基本配置好了局域网内的机器后,第一个遇到的问题就是如何批量操作这么多台机器,ansible就是这么一个自动化运维工具. ansible是一个基于ssh的批量远 ...
- 死磕 java集合之HashSet源码分析
问题 (1)集合(Collection)和集合(Set)有什么区别? (2)HashSet怎么保证添加元素不重复? (3)HashSet是否允许null元素? (4)HashSet是有序的吗? (5) ...
- .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关
Tip: 此篇已加入.NET Core微服务基础系列文章索引,本篇接上一篇<基于Steeltoe使用Eureka实现服务注册与发现>,所演示的示例也是基于上一篇的基础上而扩展的. => ...
- 如何在ASP.NET Core程序启动时运行异步任务(1)
原文:Running async tasks on app startup in ASP.NET Core (Part 1) 作者:Andrew Lock 译者:Lamond Lu 背景 当我们做项目 ...
- [macOS开发.NET Core] 开篇 & 抉择 & 先利其器
一直以来MacBook是大多数开发者的首选,无论是macOS的便利性,还是MBP的外观,更或者是为了装13,我一直认为一个开发者必须得拥有一部MBP.虽然最后的因素是大多数的. 终于在我的努力下说服下 ...