1. 问题
用特定的分治策略,选第k小的元素。
设 L是n个元素的集合,从 L 中选取第k小的元素,其中 1<=k<=n.这里的第k小元素是指,当 L 按从小到大排好序之后,排在第k个位置的元素。
2. 解析
●k=|S1|+1, m’ 就是所要找的第k小的数(以m’为划分标准后, 比m’小的有|S1|个,如果恰巧k=|S1|+1, 则m’就是所要找的第k小的数)
●k<=|S1|,归约为在s1,中找第k1小的子问题,k1在子问题中相对位置不变,即k1=k ;
●k>|S1|+1,归约为在S,中找k2位置的子问题,k2 相对于S2子问题和k相对于S的关系,即k2= k-|S1|-1。(在S中找k,就是在S2中找k2)
3. 设计
Select(S,k