排列逆序数和计算
2014-12-13 18:01
253 查看
一. 排列的逆序与逆序数
逆序: 取一个排列为标准排列, 其它排列中某两个元素的次序与标准排列中这两个元素的次序相反时,则称这两个元素构成一个逆序.逆序数: 一个排列中所有逆序总数叫做这个排列的逆序数. (注意是一个排列)
逆序数为偶数称为偶排列, 逆序数为奇数称为奇排列, 标准排列规定为偶排列.
通常取从小到大的排列为标准排列, 即 1 ~ n的全排列中取123...(n - 1)n为标准排列.
例: 123全排列的逆序数 全排列 逆序数 逆序对 123 0 (排列123的逆序数为0) 132 1 32 (排列132的逆序数为1) 213 1 21 .... 231 2 21, 31 312 2 31, 32 321 3 32, 31, 21 例: 1234全排列的逆序数 全排列 逆序数 逆序对 1 234 1 243 43 1 324 32 1 342 32, 42 1 423 42, 43 1 432 42, 43 2 134 21 2 143 21, 43 2 314 21, 31 2 341 21, 31, 41 2 413 21, 41, 43 2 431 21, 41, 43 3 124 31, 32 3 142 31, 32, 42 3 214 31, 32, 21 3 241 31, 32, 21, 41 3 412 31, 32, 41, 42 3 421 31, 32, 41, 42, 21 4 123 41, 42, 43 4 132 41, 42, 43, 32 4 213 41, 42, 43, 21 4 231 41, 42, 43, 21, 31 4 312 41, 42, 43, 31, 32 4 321 41, 42, 43, 32, 31, 21
http://www.tongji.edu.cn/~math/xxds/kcja/kcja_b/1-2.htm
二. 逆序数的计算
方法1: 直接遍历比较int IinvertedSequence(char* pData, int nLen) { int nCount = 0; int i, j; for(i = 0; i < nLen; ++i) { for(j = i + 1; j < nLen; ++i) { if(pData[i] > pData[j]) { ++nCount; } } } return nCount; }
相关文章推荐
- zoj 3157 计算几何 + 树状数组(逆序数)
- 采用分治方法对N个元素进行全排列计算
- 结果值在int类型内的排列组合计算
- poj3761 Bubble Sort(排列组合,逆序数,乘方取余)
- MATLAB计算排列组合
- AC解 - 用动态规划解决一道排列组合计数问题(序关系计算)
- 排列组合计算公式
- 求排列的逆序数
- 计算排列组合的C++程序
- 图片高度计算并排列显示
- 排列、组合的计算
- 分治之求排列的逆序数
- (C#)计算字符串排列组合数 如"abcd"组合数为24 "aabb"组合数为6
- 从键盘上任意输入一个3位整数,编译计算并输出它的逆序数(忽略整数前的正负号)
- 0811 OpenJ#求排列的逆序数
- 计算三个班同学的总成绩,并升序排列
- 全排列计算(康托展开)
- 071day(求排列的逆序数的解决和分治例题(最长公共子序列)的学习)
- 清华组合数学第一章经典复习题,用六种算法计算839647521后999种排列
- 逆序数的拆分计算