时间:2024-11-19 19:00:46
导读:逆序数的算法 逆序数的算法可以通过以下方法计算: 1. 从左向右或从右向左扫描排列,对于每个数,统计它前面或后面比它大的数的个数。 2. 如果随便交换两个数,......
逆序数的算法
逆序数的算法可以通过以下方法计算:
1. 从左向右或从右向左扫描排列,对于每个数,统计它前面或后面比它大的数的个数。
2. 如果随便交换两个数,则逆序数数值奇偶性改变。
以53124这个排列为例:
从左向右扫描,首先看5,因为5是最大的数,所以直接记录4个逆序。接着看3,找到了(3,1)和(3,2)两个逆序。
需要注意的是,如果交换两个数,逆序数的奇偶性会发生改变。例如,更改1和4,序列变成54213。分析发现,比5小的有4213,有4个,比4小的有213,有3个,比2小的有1,有1个,4+3+1加起来=8是偶数。而之前的5是奇数。即奇偶性发生了改变。