CSCI3160 T03 · Part 1/2 归并数逆序对
课程:CSCI3160 Design and Analysis of Algorithms 本讲:T03,第 1 部分 / 共 2 部分 · 原件 T03-分治-未核-隐藏.pdf(本地课件) p.1–24 定位:让递归同时返回有序数组和逆序数,在一次归并中数完全部跨半贡献。 前后:下一份 Part 2
本讲按原件提纲分为:
- Part 1:归并数逆序对(p.1–24)
- Part 2:归并数二维支配(p.25–45)
p.1–3:逆序对沿原位置分区【新】
p.1 列两个任务:线性对数时间逆序计数与支配计数。p.2 逆序对要求i<j且A[i]>A[j];p.3 例A=(10,3,9,8,2,5,4,1,7,6),按原下标分两半。排序只用于子问题返回后的合并,不能一开始把整数组排序而丢失位置关系。
p.4–6:旧方法多花一个对数
p.4 剩余任务是跨左右两半的逆序。p.5 每层重新排序并做多次二分,合并O(nlog n)。p.6 因此递推2T(n/2)+O(nlog n),各层成本分别nlog n、n(log n−1)、…,合计O(nlog²n)。
p.7–9:加强返回契约
p.7 “ask a harder question”
p.8 每个递归不仅返回逆序数,还返回升序数组;p.9 左子问题返回(2,3,8,9,10)及8,右返回(1,4,5,6,7)及4。左内部计数可逐项算4+1+2+1=8,右为2+1+0+1=4。
p.10–12:一次归并完成两项工作
p.10 已排序两半支持线性合并;p.11 要数所有左元素a大于右元素b的跨对;p.12 同步归并并累计。每输出一个左元素,加此前已经输出的右元素个数,因为这些右元素全比它小;输出右元素时本版本先不加数。
完整的返回契约可以实现为:
CountSort(A):
若长度 ≤ 1:返回 (0,A的副本)
按原位置分为左右两半
(x,L)=CountSort(左半);(y,R)=CountSort(右半)
i=j=cross=0;B=[]
当 i<|L| 或 j<|R|:
若 i<|L| 且 (j=|R| 或 L[i]≤R[j]):
B追加L[i];cross+=j;i+=1
否则:B追加R[j];j+=1
返回 (x+y+cross,B)
这里 i、j 都从 0 起,短路判断保证不会越界。末尾即使一边耗尽,仍按同一收费规则处理。
p.13–15:第一对何时计入
p.13 空输出、计数0。p.14 先输出右边的1,计数仍0;p.15 输出左边2,此前输出一个右元素,新增(2,1),总1。图(p.15):上下两排已排序数组,箭头标下一候选。元素:右指针位置1等于已输出右元素数。看什么:指针下标从0起,但累计值是数量,末尾可以到数组长度。
p.16–18:左元素收费,右元素只移动
p.16 输出左3再加1,总2;p.17 输出右4,p.18 输出右5,累计仍2。这些右元素以后会与尚未输出的较大左元素配对,暂时不加不代表遗漏。
p.19–21:右侧全部输出后
p.19 输出右6,p.20 输出右7,计数仍2,此时右侧已输出5项。p.21 输出左8,加5,总7,新增(8,1),(8,4),(8,5),(8,6),(8,7)。
p.22–24:合并总数与整题总数
p.22 左9再加5,总12;p.23 左10再加5,总17。完整逆序数为左右8+4加跨17=29。p.24 合并线性,递推2T(n/2)+O(n),每层O(n)、共O(log n)层,总O(nlog n)。每次跨对恰在其两个端点首次被分到两侧的节点计一次,所以无重无漏。
补充:把收费规则写成不变量。 输出前缀始终有序;右指针 j 等于已输出右元素个数;跨计数等于已经输出的左元素与右半所形成的全部逆序对数。输出左值 x 时,已输出右值全小于 x,尚未输出右值都不小于 x,因此恰新增 j 对。这样既不漏未来右值,也不把一对收两次费。
推广到允许重复值时,相等必须先输出左值,才能保证“已输出右值全严格小于 x”。自取左 [2,2]、右 [1,2]:先输出右1,j=1;两次左2各加1,跨数2;最后右2只推进。若相等先右,就会把相等的2误计为逆序。
自测:右半耗尽后,只复制左半剩余元素而不计数可以吗?
不可以。原例剩余左8、9、10,每项仍要加右半长度5,共15;先前只加了2,漏掉它们就会把17误写成2。尾段不是没有逻辑,只是不用再做大小比较。
本讲核心考点
- 递归同时返回计数和有序数组,使跨半统计线性(p.7–24;C 级)。
附录
本部分所需过程已在正文展开。
来源与证据
-
本次逐页复核:2026-10-13,依据上述本地课件;保留已发布深化内容,页码指 PDF 物理页。历史考试演练保留其原有出处,本次不将旧记录冒充重新阅卷。
-
原件:T03-分治-未核-隐藏.pdf(本地课件),本部分 p.1–24;页码均为 PDF 页号。
-
版本记录(2026-09-17):当时从教师官网下载并逐字节核对,与本地原件一致;此日期不是本次重新联网核验。原始学期未核,不据网页学期补猜。
-
发布状态(2026-09-17 核验时):官网链接所在行隐藏,当时按预习参考处理;不据此推断后续发布或考试范围。
-
既有考试证据记录(2026-09-17):当时读取了教师官网、Midterm-2021T1-题目.pdf、Midterm-2021T1-题解.pdf、Review-Quiz-2020T2-题目.pdf、Review-Quiz-2020T2-题解.pdf、Quiz-01-2025T1-题解.pdf、Midterm-A-2025T1-缺题干-解答.pdf、Quiz-02-2025T1-缺题干-解答.pdf、Quiz-03-2025T1-缺题干-解答.pdf、Final-2021T1-题解.pdf、Final-2024T1-缺判断-题目.pdf、Final-2025T1-题目.pdf、Final-2025T1-缺题干-解答.pdf;未识别用途的 PDF:无
-
缺题干解答卷仅用于核对已取得的题面,不由答案反推题目。