1.问题
选第k小元素:特定分治策略
2.解析
3.设计
以S中的某个元素m作为划分标准,将S划分为两个子数组S1和S2,把这个数组中比m小的都放入S1的数组中,数组S1的元素个数是|S1|个;把这个数组中比m*大的都放入S2的数组中,数组S2的元素个数是|S2|个。
若k<|S1|,则原问题归纳为在数组S1中找第k小的子问题。
若k=|S1|+1,则m*就是要找的第k小元素。
若k>|S1|+1,则原问题归纳为在数组S2中找第n−|S1|−1小的子问题。
4.分析
O(n)。
5.源码
https://github.com/QiuYuSY/AlgorithmWork/tree/master/src/xsr/sixthLesson