当前位置: 首页 > backend >正文

线代:排列与逆序

1. 排列

n级排列:由1,2,3,...,n组成的一个有序数组

1,2,3,...,n的排列一共有n!个排列(n!为n的阶乘)

123...n按顺序排列,我们称为n级标准(自然)排列

如:123,321,312是3级排列,

12346则不是排列,因为其不是一个有序数组

2. 逆序

12453,这是一个5级排列,其中4,3和5,3为两个逆序,我们称这组排列中逆序数是2

逆序数的定义就是逆序的总数,记作N(i1i2,...,in)

        练习:

1.有几个逆序数

解:

第一步:这个数本身减1

第二步:观察这个数前面有几个比它小的数,再减去比他小的数字的个数

第一位是6,那么6-1=5,前面没有比6小的数,5-0=5

第二位是4,那么4-1=3,前面没有比4小的数,3-0=3

第三位是7,那么7-1=6,前面有6、4两个数比7小,6-2=4

以此类推

得到结果:N(6471325)=13

2.有几个逆序数

解:

该排列为标准排列,故:

0个

3.有几个逆序数

解:

由该等差数列可知,其逆序数为(n-1)+(n-2)+...+2+1

根据等差数列求和公式【(首项+末项)*项数/2】得到 [(n-1)+1] * (n-1) / 2 = n(n-1)/2

n(n-1)/2个

3. 奇排列与偶排列

当排列中逆序数为奇数的时候,该排列被称为奇排列

当排序中逆序数为偶数的时候,该排列被成为偶排列

那么,

什么时候为奇排列,什么时候是偶排列呢?

我们不妨把从1到8带入n中,并计算每个排列的逆序数,计算后我们发现:

从结果我们不难发现,把每四个数字分成一组(4k),

n= (4k+1)【第一项】和 (4k)【最后一项】是偶排列,

n= (4k+2)【第二项】和 (4k+3)【第三项】是奇排列

4. 对换

我们将一个排列中的两个数字对换,会发现其的逆序数发生了改变

由此我们可知,对一个排列进行一次对换,其奇偶性会发生改变

那么如何证明呢?

假设一个数列a1-an,其中有两个任意数ai和ai+1,将其对换位置

由于此时我们不知道谁大谁小,我们就需要假设两种情况:

,我们会发现ai+1的逆序数没有变,但ai到ai+1的逆序由于对换了位置而没有了,此时整个排列的逆序数少了1,发生了奇偶性的变化。

同理,此时整个排列的逆序数多了1,发生了奇偶性的变化。

我们现在回到n阶排列,n阶排列共有n!个,那么在n!个中,有多少个奇排列,多少个偶排列呢?

首先,我们需要排除n=1的情况,因为{1}的逆序数是0,所以是偶排列,但排列极少会出现只有一个数的情况,所以我们排除这个极端情况。

那么,在n>=2的情况下,我们假设有p个奇排列,q个偶排列,如果我们对p中的一个奇排列进行对换,那么这个奇排列就会变成偶排列。那么,我们对p个奇排列全部都做对换,那么每一个奇排列都会一一对应一个偶排列,此时偶排列的个数就是q=(q+p),所以q>=p。

同理q做对换,我们会得到p=(p+q),所以p>=q。

因为此时需要同时满足条件p>=q和q>=p,所以p=q。

由此,我们得到:当 n≥2 时,偶排列和奇排列的数量严格相等,个数分别为 n!/2。

http://www.xdnf.cn/news/20278.html

相关文章:

  • 从机器学习的角度实现 excel 中趋势线:揭秘梯度下降过程
  • PageHelper的使用及底层原理
  • WordPress如何绑定多个域名 WordPress实现多域名访问
  • 新的打卡方式
  • GPIO介绍
  • java接口和抽象类有何区别
  • ICPC 2023 Nanjing R L 题 Elevator
  • 用Android studio运行海外极光推送engagelab安卓的SDK打apk安装包
  • Ribbon和LoadBalance-负载均衡
  • 从Java全栈到前端框架:一次真实面试的深度复盘
  • 验证平台中所有的组件应该派生自UVM中的类
  • 设计艺术~缓存结构设计
  • 【Go项目基建】GORM框架实现SQL校验拦截器(完整源码+详解)
  • C++和OpenGL实现3D游戏编程【连载30】——文字的多行显示
  • MySQL集群——主从复制进阶
  • 2025年上海市星光计划第十一届职业院校技能大赛高职组“信息安全管理与评估”赛项交换部分前6题详解(仅供参考)
  • FlashAttention:突破Transformer内存瓶颈的IO感知革命
  • Web漏洞挖掘篇(二)—信息收集
  • 浪潮CD1000-移动云电脑-RK3528芯片-2+32G-安卓9-2种开启ADB ROOT刷机教程方法
  • Chat with RTX-NVIDIA推出的本地AI聊天机器人
  • .NET Core 应用部署深度解析:从 IIS 到 Docker+Kestrel 的迁移与性能优化实战
  • 电脑音频录制 | 系统麦克混录 / 系统声卡直录 | 方法汇总 / 常见问题
  • Unity与硬件交互终极指南:从Arduino到自定义USB设备
  • 零基础Linux操作基础小白快速掌握Shell脚本--流程控制和循环(二)
  • CAD:注释
  • PPTist,一个完全免费的 AI 生成 PPT 在线网站
  • 贪心算法应用:流行病干预策略问题详解
  • redis的数据类型:Hash
  • 【数据结构】带哨兵位双向循环链表
  • 50系显卡训练深度学习YOLO等算法报错的解决方法