package NC;
import java.util.*;
/**
* NC119 最小的K个数
*
* 给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。
* 数据范围 0 - 100000:,数组中每个数的大小
* 要求:空间复杂度O(n) ,时间复杂度O(nlogn)
*
*
* @author Tang
* @date 2021/9/29
*/
public class GetLeastNumbers {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> result = new ArrayList<>();
if(input.length == 0 || input.length < k) {
return result;
}
int index = -1;
for(int i = 0; i < k; i++) {
for(int j = i; j < input.length; j++) {
//找到更小的值
//交换到元素第i位
if(input[j] <= input[i]) {
int temp = input[i];
input[i] = input[j];
input[j] = temp;
}
}
result.add(input[i]);
}
return result;
}
}