第二章实践作业

一、分治算法(快速选择)
选基准pivot划分数组,小于等于pivot放左边,大于放右边。判断基准在当前区间的位次:
1.位次=k:直接返回pivot;
2.位次>k:递归左区间找第k小;
3.位次<k:递归右区间,找第(k - 位次)小。

二、时间复杂度
最好:O(n),每次划分均匀,总工作量是n+n/2+n/4+…≈2n
最坏:O(n^2),每次pivot都是最值,每次只能剔除 1 个元素

三、分治体会
分治就是把大问题拆成同结构子问题。快速选择是典型例子:拆分后不用处理全部子问题,只递归目标所在一侧,省去完整排序的开销。
分治性能依赖划分是否均衡。拆分失衡会让算法效率暴跌。遇到难题可以尝试拆解,但要思考哪些子问题真正需要求解,减少多余计算。

posted @ 2026-10-13 21:15  (=  阅读(3)  评论(0)    收藏  举报