作业6的任务是分治求解第K小的数
发布时间
阅读量:
阅读量
1.问题
假设集合L包含n个元素,从中确定第K小的元素,其中K的取值范围为1到n之间。
2.解析框架构建

- 任取序列中的一个数值m,当该数值满足其前面存在的数的数量等于|S1|+1时,即可判定m为序列中第K小的元素。
- 当K小于|S1|时,将问题的范围进行缩减,转化为在集合S1中确定第K小的数值。
- 若K大于|S2|,则同样缩小问题规模,将其转化为在集合S2中查找第K-|S1|-1小的数值。
- 持续循环执行步骤1、2与3,直至最终确定第K小的数值。

3.设计
void getKth(int arr[], int low, int high, int K)
{
int tmp = arr[low], l = low, r = high;
while (low <
全部评论 (0)
还没有任何评论哟~
