- 算法描述
核心思路:选一个基准q,把数组划分成两部分:左边≤q,右边≥q。设基准在划分后的位置为 p 。
如果 p == k-1 :基准就是第k小元素,直接返回;
如果 p > k-1 :第k小在左半区间,递归处理左半边;
如果 p < k-1 :第k小在右半区间,递归处理右半边,此时找右半里第 k-p-1 小。
2.最好情况:每次划分都把数组大致均分
递推式:T(n)=T(n/2)+O(n)
解得:T(n)=O(n)
最坏情况:每次选的pivot都是最值(有序数组,选端点),每次划分只能分出1个元素
递推式:T(n)=T(n-1)+O(n)
解得:T(n)=O(n^2)
3.对分治法的体会和思考
分治法的核心是“分、治、合”,把规模较大的原问题,拆成若干结构相同、规模更小的子问题,求解子问题后,再合并子问题的结果得到原问题答案。分治适合可以独立拆分的问题,比如归并排序、快速选择、最近点对。优点是思路清晰,适合并行;但如果划分不均衡,会导致复杂度退化。使用分治时,划分策略非常关键,好的划分能大幅提升效率。分治体现了化繁为简的算法思维,是很多高效算法的基础。
posted @
2026-10-12 18:10
hhrhehe
阅读(
4)
评论()
收藏
举报