题目:
输入 n 个整数,找出其中最小的的 K 个数。
实现
// coding = java
public class Solution30 {
public static void findNums(int[] nums ,int k){
if(nums==null || nums.length<1 || k<1 || k>nums.length){
return;
}
if(k==nums.length){
for(int i=0;i<k;i++){
System.out.print(nums[i]);
}
return;
}
int low = 0;
int high = nums.length-1;
int index = partition(nums,low,high);
while(index!=k){
if(index>k){
high=index-1;
index = partition(nums,low,high);
}
else{
low = index+1;
index = partition(nums,low,high);
}
}
for(int i =0;i<k;i++){
System.out.print(nums[i]);
}
}
public static int partition(int nums[],int low,int high){
int pivot = nums[low];
while (low<high){
while (low<high && nums[high]>=pivot){
high--;
}
nums[low]=nums[high];
while (low<high && nums[low]<=pivot){
low++;
}
nums[high]=nums[low];
}
nums[low]=pivot;
return low;
}
public static void main(String[] args){
int[] nums = {1,2,3,4,5,6,7,8,9};
findNums(nums,8);
}
}