标签:算法 pre 描述 tco interview sort number length 题目
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。
把数组升序排好,取出最前的k个即可,很暴力,比较低效, 仅适合与k接近与数组长度。
//java 8ms
public int[] getLeastNumbers(int[] arr, int k) {
Arrays.sort(arr);
int [] res = new int[k];
for (int i=0;i<k;i++){
res[i]=arr[i];
}
return res;
}
想法是只找出k个最小数,不要对其他的数进行排序
//效率还是不行,比上面全排序还差,这个排序算法需要改进!
public int[] getLeastNumbers(int[] arr, int k) {
int len = arr.length;
int [] res = new int[k];
for (int i=0;i<k;i++){
int min = arr[i];
int minIndex=i;
for (int j=i+1;j<len;j++){
if (arr[j]<min){
min = arr[j];
minIndex=j;
}
}
if (minIndex!=i) arr[minIndex]=arr[i];
res[i]=min;
}
return res;
}
标签:算法 pre 描述 tco interview sort number length 题目
原文地址:https://www.cnblogs.com/XT-xutao/p/12535659.html