原问题分解为多个子问题
1.合并排序(快排的子问题)
合并两个已经排序的序列
2.快速排序
划分排序,对小数组插排
3.树的遍历
前序中序后序
4.大整数乘法,Stanssen矩阵乘法
大整数分解为高低位,平方和公式
5.最近对与凸包
最近对:点集沿一个轴方向均分,d=min(dl,dr) 考察宽为d的中间带中的点间距离
凸包:最左右点连线划分上下包,选最远且角度最大的点。。。
习题
5.1
最大元素:分治
同时求最大最小
计算指数
计算倒置数目???
倒置角度分析排序???
5.2.
快排性质
限位器:防止越界访问
各种排序算法的边界效益 比较
正负数划分
螺丝螺母配对
螺丝间,螺母间不允许比较
螺母作为螺丝的划分依据
5.3
计算二叉树层数,叶子数,高度
不显式使用堆栈!
前序中序后序遍历二叉树
能否产生有序序列
反问题:根据两种序列生成二叉树
内部路径长度:all根——内部结点I
外:all根——外部节点E
E=I+2n
计算内部路径长度/外部
掰巧克力:最少次数
5.4
5.5
一维最近点
S中每个点离一个点p距离都最近
快包算法
求pmax
最佳效率
1000个点,构造100个十边型,不相交,不共点
不穿过凸多边形的两个点间最短路径
证明