排列的一个对换必改变原排列逆序对奇偶性 的证明
Proof.
对一个数列,我们知道其 逆序对 可以按照如下方式计算:
∑
i
=
1
n
∑
j
=
1
i
−
1
[
a
j
>
a
i
]
(*)
\sum _{i = 1} ^ n\sum_{j = 1} ^ {i - 1}[a_j >a_i] \tag{*}
i=1∑nj=1∑i−1[aj>ai](*)
不妨假设原数列为 a 1 , a 2 , a 3 , … a I , . . . a J … a n a_1, a_2, a_3, \dots \textcolor {red} {a_{I}}, ... \textcolor {red} {a_{J}} \dots a_n a1,a2,a3,…aI,...aJ…an
我们对 a I , a J a_I, a_J aI,aJ 做一次对换,并按照 ( ∗ ) (*) (∗) 式计算其逆序对改变量 Δ \Delta Δ,为了不引起混淆 我们记 x = a I , y = a J x = a_I, y=a_J x=aI,y=aJ
对于 { 1 , 2 , . . . I − 1 } \{1, 2, ... I - 1\} {1,2,...I−1} 位置,前后未发生变化 Δ i = 0 \Delta_i = 0 Δi=0
对于
{
I
}
\{I\}
{I} 位置,
a
I
→
a
J
a_I \to a_J
aI→aJ
Δ
I
=
−
∑
i
=
1
I
−
1
[
a
i
>
x
]
+
∑
i
=
1
I
−
1
[
a
i
>
y
]
\Delta_I = -\sum_{i = 1} ^ {I - 1} [a_{i} > x] + \sum_{i = 1} ^ {I - 1} [a_i > y]
ΔI=−i=1∑I−1[ai>x]+i=1∑I−1[ai>y]
对于
{
I
+
1
,
I
+
2
,
.
.
.
J
−
1
}
\{I + 1, I + 2, ... J - 1\}
{I+1,I+2,...J−1} 位置,其前方只有
I
I
I 位置发生变化
Δ
i
=
−
[
x
>
a
i
]
+
[
y
>
a
i
]
\Delta_i = -[x > a_i] + [y > a_i]
Δi=−[x>ai]+[y>ai]
对于
{
J
}
\{J\}
{J} 位置,
a
J
→
a
I
a_J \to a_I
aJ→aI
Δ
J
=
−
(
[
x
>
y
]
+
∑
[
1
,
I
)
∪
(
I
,
J
)
[
a
i
>
y
]
)
+
(
[
y
>
x
]
+
∑
[
1
,
I
)
∪
(
I
,
J
)
[
a
i
>
x
]
)
\Delta_J = - ([x > y] + \sum_{[1, I) \cup(I, J)} [a_i > y]) + ([y>x] + \sum_{[1, I) \cup (I, J)} [a_i > x])
ΔJ=−([x>y]+[1,I)∪(I,J)∑[ai>y])+([y>x]+[1,I)∪(I,J)∑[ai>x])
对于
{
J
+
1
,
J
+
2
,
.
.
.
,
n
}
\{J + 1, J + 2, ..., n\}
{J+1,J+2,...,n} 位置,其前方整体贡献未发生变化
Δ
i
=
0
\Delta_i = 0
Δi=0
故逆序对总变化量
Δ
=
∑
i
=
1
n
Δ
i
=
−
∑
i
∈
[
1
,
I
)
[
a
i
>
x
]
+
∑
i
∈
[
1
,
I
)
[
a
i
>
y
]
+
∑
i
∈
(
I
,
J
)
(
−
[
x
>
a
i
]
+
[
y
>
a
i
]
)
−
[
x
>
y
]
−
(
∑
i
∈
[
1
,
I
)
∪
(
I
,
J
)
[
a
i
>
y
]
)
+
[
y
>
x
]
+
∑
i
∈
[
1
,
I
)
∪
(
I
,
J
)
[
a
i
>
x
]
=
[
y
>
x
]
−
[
x
>
y
]
+
∑
i
∈
(
I
,
J
)
(
[
a
i
>
x
]
−
[
x
>
a
i
]
−
[
a
i
>
y
]
+
[
y
>
a
i
]
)
\begin{aligned} \Delta &= \sum_{i = 1} ^ n\Delta_i \\ & = \textcolor {red} {-\sum_{i \in [1, I)} [a_{i} > x]} + \textcolor {blue} {\sum_{i \in [1, I)} [a_i > y] }+ \sum_{i \in (I, J)} (-[x > a_i] + [y > a_i]) - [x > y] \\ & \textcolor {blue} { - (\sum_{i \in [1, I) \cup(I, J)} [a_i > y])}{} + [y>x] + \textcolor {red} {\sum_{i \in [1, I) \cup (I, J)} [a_i > x]}\\ & = [y>x]-[x>y] + \sum_{i\in(I, J)} ([a_i>x]-[x>a_i]-[a_i>y]+[y>a_i]) \end{aligned}
Δ=i=1∑nΔi=−i∈[1,I)∑[ai>x]+i∈[1,I)∑[ai>y]+i∈(I,J)∑(−[x>ai]+[y>ai])−[x>y]−(i∈[1,I)∪(I,J)∑[ai>y])+[y>x]+i∈[1,I)∪(I,J)∑[ai>x]=[y>x]−[x>y]+i∈(I,J)∑([ai>x]−[x>ai]−[ai>y]+[y>ai])
注意到
a
i
a_i
ai 是一个排列,故
x
,
y
∉
{
a
I
+
1
,
.
.
.
a
J
−
1
}
x, y \not\in \{a_{I + 1}, ... a_{J - 1}\}
x,y∈{aI+1,...aJ−1}
我们令
N
=
J
−
I
−
1
,
X
=
∑
i
∈
(
I
,
J
)
[
a
i
>
x
]
,
Y
=
∑
i
∈
(
I
,
J
)
[
a
i
>
y
]
N = J - I - 1, X = \sum_{i\in (I, J)} [a_i>x], Y = \sum_{i\in(I,J)} [a_i>y]
N=J−I−1,X=∑i∈(I,J)[ai>x],Y=∑i∈(I,J)[ai>y]
Δ
=
[
y
>
x
]
−
[
x
>
y
]
+
(
2
X
−
N
)
+
(
N
−
2
Y
)
=
[
y
>
x
]
−
[
x
>
y
]
+
2
(
X
−
Y
)
\Delta = [y>x]-[x>y] + (2X - N) + (N - 2Y) \\ =[y>x]-[x>y]+2(X-Y)
Δ=[y>x]−[x>y]+(2X−N)+(N−2Y)=[y>x]−[x>y]+2(X−Y)
由此
Δ
\Delta
Δ 必为奇数,故对换必然改变原数列逆序对奇偶性。
另一种想法:
注意到交换相邻元素逆序对的改变量只能为 1 或 -1
swap ( a I , a J ) \text{swap} (a_I, a_J) swap(aI,aJ) 这个操作等价于进行 ( J − I − 1 ) + ( J − I ) = 2 ( J − I ) − 1 (J - I - 1) + (J - I) = 2(J- I) - 1 (J−I−1)+(J−I)=2(J−I)−1 次交换相邻的操作
故逆序对改变量必为奇数。