提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1.问题
[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]
6.5.7选第k小元素:特定分治策略
2.解析
[问题的理解和推导,可用电子版直接在此编写,也可用纸笔推导,拍照嵌入本文档]
3.设计
[核心伪代码]
int Select(int s[], int low, int high, int k)
{ //得到中间数的下标
int i = partition(s, low, high);
//j为左区间长度
int j=i-low+1;
//位置大就在左区间找,否则就在右区间找
if (j == k)
return s[i];
else if (k<j)
return Select(s, low, i, k);
else return Select(s,i+1,high,k-j);
}
4.分析
[算法复杂度推导]
5.源码
[github源码地址]
https://github.com/RyokoJiang/homework/blob/main/Suanfa_6.cpp