算法练习与分治策略深度解析
1. 中位数相关问题
- 寻找最接近中位数的 k 个数 :给定一个包含 n 个不同数字的数组 A 和正整数 k(k ≤ n),需要设计算法找出 A 中最接近中位数的 k 个数。
- 两个有序数组的中位数 :对于两个有序数组 A[1..n] 和 B[1..n],要设计算法找出这 2n 个元素的中位数,并分析其运行时间。
- 快速排序以中位数为枢轴的比较次数 :若快速排序总是选择中位数元素作为枢轴,分析在最坏情况下的比较次数。
2. 整数乘法问题
2.1 递归乘法算法
以下是一个递归算法来计算两个数 u 和 v 的乘积:
Multiply(u, v):
(1) Assume n = length(u) = length(v), can pad 0’s for shorter number
(2) if length(u) and length(v) = 1 then return u × v
(3) Partition u,v into u = x × 10 n/2 + y and v = w × 10n/2 + z
(4) A = Multiply(x, w)
(5) B = Multiply(y, w)
(6) C = Multiply(x, z)
(7) D = Multiply(y, z)
(8) Return A × 10n + (B + C) × 10 n
超级会员免费看
订阅专栏 解锁全文
1368

被折叠的 条评论
为什么被折叠?



