第二章作业

1.算法描述
找第k小的数的分治算法基于快速选择思想,但每次只递归处理包含第k小元素的那一侧。
①在数组中选取一个基准元素,将数组划分为两部分:左侧元素都小于基准,右侧元素都大于基准,计算基准元素的位次。
②若k恰好等于基准位次,直接返回基准元素;
若k小于基准位次,说明目标元素在左半区间,递归在左半区间继续寻找第k小;
若k大于基准位次,说明目标元素在右半区间,递归在右半区间寻找第k减去左侧元素个数的数。

2.复杂度
①最好时间复杂度:O(n)
每次划分可以把数组大致均分,总比较次数:n + n/2 + n/4 +...=O(n)
②最坏时间复杂度:O(n^2)
每次选的基准都是区间最大或最小值,划分后一侧仅1个元素,递归式(T(n)=n+T(n-1),总和为O(n^2)

3.体会与思考
分治法的核心是将大问题拆成结构相同、规模更小的子问题。快速选择找第k小元素,利用划分操作分割数组,只递归搜索其中一侧子区间,而不是像快速排序那样两边都递归求解,省去了不必要的排序工作,大大提升了效率。它的性能高度依赖划分策略,基准选取的好坏会极大影响复杂度。

posted @ 2026-10-13 23:03  Jingziiiii  阅读(3)  评论(0)    收藏  举报