題目描述:
輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。
import java.util.*;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer>topk=new ArrayList();
if(k>input.length){
return topk;
}
quickSort(input,0,input.length-1);
for(int i=0;i<k;i++)
topk.add(input[i]);
return topk;
}
private void quickSort(int[]input,int left,int right){
if(left>=right)return;
int value=input[left];
int l=left;
int r=right;
while(l<r){
while(l<r&&input[r]>=value)r--;
input[l]=input[r];
while(l<r&&input[l]<=value)l++;
input[r]=input[l];
}
input[r]=value;
quickSort(input,left,r-1);
quickSort(input,r+1,right);
}
}