先进行快速排序算法,使得比第k个数小的整数都排到第k个数之前,然后第k个数的左边就是数组中最小的K个数;
算法实现如下:
void GetLeastNumbers(int* input,int n,int* output,int k){
if(input==null||output==null||n<=0||k>n||k<=0){
return;
}
int start=0;
int end=n-1;
int index=partition(input,n,start,end);//快速排序算法
while(index!=k-1){
if(index>k-1){
end=index-1;
index=partition(input,n,start,end);
}
else {
start=index+1;
index=partition(input,n,start,end);
}
}
for(int i=0;i<k;i++){
output[i]=input[i];
}
}//输入n个整数,找出其中最小的K个数
转载请注明原文地址: https://ju.6miu.com/read-40091.html