分治算法

归并排序

  1. 分解:将要排序的n个元素的序列分解成两个具有n/2个元素的子序列;
  2. 解决:使用归并排序分别递归地排序两个子序列;
  3. 合并:合并两个已排序的子序列,产生原问题的解。

无序数组的中位数(TopK)

任意挑一个元素,以该元素为支点,将数组分成两部分,左部分是小于等于支点的,右部分是大于支点的。如果你的运气爆棚,左部分正好是(n-1)/2个元素,那么支点的那个数就是中位数。否则的话则对两侧重复寻找该点

平面最近点对问题

给点平面上的一些点,求距离最近的两个点的距离是多少?
已知一个点的集合S,将S拆分成左右两部分求最近点对。首先对点集S进行排序,一般对点的X坐标从小到大排。算法每次选取一条直线(垂线)L,将S拆分成左右两部分Sl,Sr。L一般取点集S中所有点的中间点的x坐标来划分,这样可以保证SL和SR中的点数目各为n/2。
依次找到Sl,Sr中的最短距离dl,dr。记录最短距离d=min(dl,dr);
对于Sl虚框范围内的某点P,在Sr虚框中与P点距离小于d的点顶多只有六个,就是图二右图中的2个正方形的6的顶点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值