面试经常会遇到这样算法题目:说一下求第K个小的元素的思路
分三步
1. n个数中随机找一个A[i]=x
2. 划分三个数组s1(元素<x) s2(元素=x) s3(元素>x)
3. 若|s1|>k 调用select(k,s1)
若|s1+s2|>=k 第k小的元素就是x
若|s1+s2|<k 调用select(k-|s1|-|s2|,s3)
面试经常会遇到这样算法题目:说一下求第K个小的元素的思路
分三步
1. n个数中随机找一个A[i]=x
2. 划分三个数组s1(元素<x) s2(元素=x) s3(元素>x)
3. 若|s1|>k 调用select(k,s1)
若|s1+s2|>=k 第k小的元素就是x
若|s1+s2|<k 调用select(k-|s1|-|s2|,s3)