题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
(1)利用java api,对数组排序,选择前k个
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> nums=new ArrayList<Integer>();
if(k>input.length){
return nums;
}
Arrays.sort(input);
for(int i=0;i<k;i++){
nums.add(input[i]);
}
return nums;
}
}
(2)利用选择排序的思想,找到前k个最小的数
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> nums=new ArrayList<Integer>();
if(k>input.length){
return nums;
}
//利用选择排序
for(int i=0;i<k;i++){
int min=i;
for(int j=i+1;j<input.length;j++){
if(input[j]<input[min]){
min=j;
}
}
nums.add(input[min]);
swap(input,i,min);
}
return nums;
}
public static void swap(int []array,int i,int j){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}