class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
vector<int> res;
int size=input.size();
if(input.size()==NULL||input.size()<k)
return res;
int start=0;
int end=size-1;
int mid=partion(input,start,end);
while((k-1)!=mid){
if((k-1)>mid){
start=mid+1;
mid=partion(input,start,end);
}else{
end=mid-1;
mid=partion(input,start,end);
}
}
for(int i=0;i<k;++i){
res.push_back(input[i]);
}
return res;
}
int partion(vector<int> &data,int l,int r){
int i=l;
int j=r;
int key=data[i];
while(i<j){
while(i<j&&(data[j]>=key)){
--j;
}
data[i]=data[j];
while(i<j&&(data[i]<=key)){
++i;
}
data[j]=data[i];
}
data[i]=key;
return i;
}
};
portion 算法找到有序数组中的第k个
猜你喜欢
转载自blog.csdn.net/u010325193/article/details/86439549
今日推荐
周排行