分治法求第k小元素
1. 问题
选第k小元素:特定分治策略
2. 解析
3. 设计
public static int Select(int a[], int l, int r, int k){
int p = FindMid(a, l, r); //递归寻找中位数的中位数
int i = Partion(a, l, r, p); //进行划分过程
int m = i - l + 1;
if(m == k) return a[i];
if(m > k) return Select(a, l, i - 1, k);
return Select(a, i + 1, r, k - m);
}
4. 分析
5. 源码
https://github.com/Marshmello11/Algorithm/tree/master/Experiment_6